Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84787c57 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (patches from Andrew)

Merge yet more updates from Andrew Morton:

 - Oleg's "wait/ptrace: assume __WALL if the child is traced".  It's a
   kernel-based workaround for existing userspace issues.

 - A few hotfixes

 - befs cleanups

 - nilfs2 updates

 - sys_wait() changes

 - kexec updates

 - kdump

 - scripts/gdb updates

 - the last of the MM queue

 - a few other misc things

* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (84 commits)
  kgdb: depends on VT
  drm/amdgpu: make amdgpu_mn_get wait for mmap_sem killable
  drm/radeon: make radeon_mn_get wait for mmap_sem killable
  drm/i915: make i915_gem_mmap_ioctl wait for mmap_sem killable
  uprobes: wait for mmap_sem for write killable
  prctl: make PR_SET_THP_DISABLE wait for mmap_sem killable
  exec: make exec path waiting for mmap_sem killable
  aio: make aio_setup_ring killable
  coredump: make coredump_wait wait for mmap_sem for write killable
  vdso: make arch_setup_additional_pages wait for mmap_sem for write killable
  ipc, shm: make shmem attach/detach wait for mmap_sem killable
  mm, fork: make dup_mmap wait for mmap_sem for write killable
  mm, proc: make clear_refs killable
  mm: make vm_brk killable
  mm, elf: handle vm_brk error
  mm, aout: handle vm_brk failures
  mm: make vm_munmap killable
  mm: make vm_mmap killable
  mm: make mmap_sem for write waits killable for mm syscalls
  MAINTAINERS: add co-maintainer for scripts/gdb
  ...
parents d62a0234 c5d2cac0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -268,3 +268,8 @@ among NILFS2 files can be depicted as follows:
                                    ( regular file, directory, or symlink )

For detail on the format of each file, please see include/linux/nilfs2_fs.h.

There are no patents or other intellectual property that we protect
with regard to the design of NILFS2.  It is allowed to replicate the
design in hopes that other operating systems could share (mount, read,
write, etc.) data stored in this format.
+21 −0
Original line number Diff line number Diff line
@@ -139,6 +139,27 @@ Examples of using the Linux-provided gdb helpers
      start_comm = "swapper/2\000\000\000\000\000\000"
    }

 o Dig into a radix tree data structure, such as the IRQ descriptors:
    (gdb) print (struct irq_desc)$lx_radix_tree_lookup(irq_desc_tree, 18)
    $6 = {
      irq_common_data = {
        state_use_accessors = 67584,
        handler_data = 0x0 <__vectors_start>,
        msi_desc = 0x0 <__vectors_start>,
        affinity = {{
            bits = {65535}
          }}
      },
      irq_data = {
        mask = 0,
        irq = 18,
        hwirq = 27,
        common = 0xee803d80,
        chip = 0xc0eb0854 <gic_data>,
        domain = 0xee808000,
        parent_data = 0x0 <__vectors_start>,
        chip_data = 0xc0eb0854 <gic_data>
      } <... trimmed ...>

List of commands and functions
------------------------------
+44 −52
Original line number Diff line number Diff line
@@ -15,15 +15,16 @@

define bttnobp
	set $tasks_off=((size_t)&((struct task_struct *)0)->tasks)
	set $pid_off=((size_t)&((struct task_struct *)0)->pids[1].pid_list.next)
	set $pid_off=((size_t)&((struct task_struct *)0)->thread_group.next)
	set $init_t=&init_task
	set $next_t=(((char *)($init_t->tasks).next) - $tasks_off)
	set var $stacksize = sizeof(union thread_union)
	while ($next_t != $init_t)
		set $next_t=(struct task_struct *)$next_t
		printf "\npid %d; comm %s:\n", $next_t.pid, $next_t.comm
		printf "===================\n"
		set var $stackp = $next_t.thread.esp
		set var $stack_top = ($stackp & ~4095) + 4096
		set var $stackp = $next_t.thread.sp
		set var $stack_top = ($stackp & ~($stacksize - 1)) + $stacksize

		while ($stackp < $stack_top)
			if (*($stackp) > _stext && *($stackp) < _sinittext)
@@ -31,13 +32,13 @@ define bttnobp
			end
			set $stackp += 4
		end
		set $next_th=(((char *)$next_t->pids[1].pid_list.next) - $pid_off)
		set $next_th=(((char *)$next_t->thread_group.next) - $pid_off)
		while ($next_th != $next_t)
			set $next_th=(struct task_struct *)$next_th
			printf "\npid %d; comm %s:\n", $next_t.pid, $next_t.comm
			printf "===================\n"
			set var $stackp = $next_t.thread.esp
			set var $stack_top = ($stackp & ~4095) + 4096
			set var $stackp = $next_t.thread.sp
			set var $stack_top = ($stackp & ~($stacksize - 1)) + stacksize

			while ($stackp < $stack_top)
				if (*($stackp) > _stext && *($stackp) < _sinittext)
@@ -45,7 +46,7 @@ define bttnobp
				end
				set $stackp += 4
			end
			set $next_th=(((char *)$next_th->pids[1].pid_list.next) - $pid_off)
			set $next_th=(((char *)$next_th->thread_group.next) - $pid_off)
		end
		set $next_t=(char *)($next_t->tasks.next) - $tasks_off
	end
@@ -54,42 +55,44 @@ document bttnobp
	dump all thread stack traces on a kernel compiled with !CONFIG_FRAME_POINTER
end

define btthreadstack
	set var $pid_task = $arg0

	printf "\npid %d; comm %s:\n", $pid_task.pid, $pid_task.comm
	printf "task struct: "
	print $pid_task
	printf "===================\n"
	set var $stackp = $pid_task.thread.sp
	set var $stacksize = sizeof(union thread_union)
	set var $stack_top = ($stackp & ~($stacksize - 1)) + $stacksize
	set var $stack_bot = ($stackp & ~($stacksize - 1))

	set $stackp = *((unsigned long *) $stackp)
	while (($stackp < $stack_top) && ($stackp > $stack_bot))
		set var $addr = *(((unsigned long *) $stackp) + 1)
		info symbol $addr
		set $stackp = *((unsigned long *) $stackp)
	end
end
document btthreadstack
	 dump a thread stack using the given task structure pointer
end


define btt
	set $tasks_off=((size_t)&((struct task_struct *)0)->tasks)
	set $pid_off=((size_t)&((struct task_struct *)0)->pids[1].pid_list.next)
	set $pid_off=((size_t)&((struct task_struct *)0)->thread_group.next)
	set $init_t=&init_task
	set $next_t=(((char *)($init_t->tasks).next) - $tasks_off)
	while ($next_t != $init_t)
		set $next_t=(struct task_struct *)$next_t
		printf "\npid %d; comm %s:\n", $next_t.pid, $next_t.comm
		printf "===================\n"
		set var $stackp = $next_t.thread.esp
		set var $stack_top = ($stackp & ~4095) + 4096
		set var $stack_bot = ($stackp & ~4095)
		btthreadstack $next_t

		set $stackp = *($stackp)
		while (($stackp < $stack_top) && ($stackp > $stack_bot))
			set var $addr = *($stackp + 4)
			info symbol $addr
			set $stackp = *($stackp)
		end

		set $next_th=(((char *)$next_t->pids[1].pid_list.next) - $pid_off)
		set $next_th=(((char *)$next_t->thread_group.next) - $pid_off)
		while ($next_th != $next_t)
			set $next_th=(struct task_struct *)$next_th
			printf "\npid %d; comm %s:\n", $next_t.pid, $next_t.comm
			printf "===================\n"
			set var $stackp = $next_t.thread.esp
			set var $stack_top = ($stackp & ~4095) + 4096
			set var $stack_bot = ($stackp & ~4095)

			set $stackp = *($stackp)
			while (($stackp < $stack_top) && ($stackp > $stack_bot))
				set var $addr = *($stackp + 4)
				info symbol $addr
				set $stackp = *($stackp)
			end
			set $next_th=(((char *)$next_th->pids[1].pid_list.next) - $pid_off)
			btthreadstack $next_th
			set $next_th=(((char *)$next_th->thread_group.next) - $pid_off)
		end
		set $next_t=(char *)($next_t->tasks.next) - $tasks_off
	end
@@ -101,7 +104,7 @@ end
define btpid
	set var $pid = $arg0
	set $tasks_off=((size_t)&((struct task_struct *)0)->tasks)
	set $pid_off=((size_t)&((struct task_struct *)0)->pids[1].pid_list.next)
	set $pid_off=((size_t)&((struct task_struct *)0)->thread_group.next)
	set $init_t=&init_task
	set $next_t=(((char *)($init_t->tasks).next) - $tasks_off)
	set var $pid_task = 0
@@ -113,29 +116,18 @@ define btpid
			set $pid_task = $next_t
		end

		set $next_th=(((char *)$next_t->pids[1].pid_list.next) - $pid_off)
		set $next_th=(((char *)$next_t->thread_group.next) - $pid_off)
		while ($next_th != $next_t)
			set $next_th=(struct task_struct *)$next_th
			if ($next_th.pid == $pid)
				set $pid_task = $next_th
			end
			set $next_th=(((char *)$next_th->pids[1].pid_list.next) - $pid_off)
			set $next_th=(((char *)$next_th->thread_group.next) - $pid_off)
		end
		set $next_t=(char *)($next_t->tasks.next) - $tasks_off
	end

	printf "\npid %d; comm %s:\n", $pid_task.pid, $pid_task.comm
	printf "===================\n"
	set var $stackp = $pid_task.thread.esp
	set var $stack_top = ($stackp & ~4095) + 4096
	set var $stack_bot = ($stackp & ~4095)

	set $stackp = *($stackp)
	while (($stackp < $stack_top) && ($stackp > $stack_bot))
		set var $addr = *($stackp + 4)
		info symbol $addr
		set $stackp = *($stackp)
	end
	btthreadstack $pid_task
end
document btpid
	backtrace of pid
@@ -145,7 +137,7 @@ end
define trapinfo
	set var $pid = $arg0
	set $tasks_off=((size_t)&((struct task_struct *)0)->tasks)
	set $pid_off=((size_t)&((struct task_struct *)0)->pids[1].pid_list.next)
	set $pid_off=((size_t)&((struct task_struct *)0)->thread_group.next)
	set $init_t=&init_task
	set $next_t=(((char *)($init_t->tasks).next) - $tasks_off)
	set var $pid_task = 0
@@ -157,13 +149,13 @@ define trapinfo
			set $pid_task = $next_t
		end

		set $next_th=(((char *)$next_t->pids[1].pid_list.next) - $pid_off)
		set $next_th=(((char *)$next_t->thread_group.next) - $pid_off)
		while ($next_th != $next_t)
			set $next_th=(struct task_struct *)$next_th
			if ($next_th.pid == $pid)
				set $pid_task = $next_th
			end
			set $next_th=(((char *)$next_th->pids[1].pid_list.next) - $pid_off)
			set $next_th=(((char *)$next_th->thread_group.next) - $pid_off)
		end
		set $next_t=(char *)($next_t->tasks.next) - $tasks_off
	end
+10 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
# 2) Generate timeconst.h
# 3) Generate asm-offsets.h (may need bounds.h and timeconst.h)
# 4) Check for missing system calls
# 5) Generate constants.py (may need bounds.h)

# Default sed regexp - multiline due to syntax constraints
define sed-y
@@ -96,5 +97,14 @@ quiet_cmd_syscalls = CALL $<
missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
	$(call cmd,syscalls)

#####
# 5) Generate constants for Python GDB integration
#

extra-$(CONFIG_GDB_SCRIPTS) += build_constants_py

build_constants_py: $(obj)/$(timeconst-file) $(obj)/$(bounds-file)
	@$(MAKE) $(build)=scripts/gdb/linux $@

# Keep these three files during make clean
no-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file)
+2 −0
Original line number Diff line number Diff line
@@ -4993,6 +4993,7 @@ F: drivers/scsi/gdt*

GDB KERNEL DEBUGGING HELPER SCRIPTS
M:	Jan Kiszka <jan.kiszka@siemens.com>
M:	Kieran Bingham <kieran@bingham.xyz>
S:	Supported
F:	scripts/gdb/

@@ -8038,6 +8039,7 @@ NILFS2 FILESYSTEM
M:	Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
L:	linux-nilfs@vger.kernel.org
W:	http://nilfs.sourceforge.net/
W:	http://nilfs.osdn.jp/
T:	git git://github.com/konis/nilfs2.git
S:	Supported
F:	Documentation/filesystems/nilfs2.txt
Loading