Revision 73863ab028579ed98c4f1f36d016536b1b415344 authored by Anton Vorontsov on 31 May 2012, 23:26:23 UTC, committed by Linus Torvalds on 01 June 2012, 00:49:29 UTC
Current CPU hotplug code has some task->mm handling issues:

1. Working with task->mm w/o getting mm or grabing the task lock is
   dangerous as ->mm might disappear (exit_mm() assigns NULL under
   task_lock(), so tasklist lock is not enough).

   We can't use get_task_mm()/mmput() pair as mmput() might sleep,
   so we must take the task lock while handle its mm.

2. Checking for process->mm is not enough because process' main
   thread may exit or detach its mm via use_mm(), but other threads
   may still have a valid mm.

   To fix this we would need to use find_lock_task_mm(), which would
   walk up all threads and returns an appropriate task (with task
   lock held).

clear_tasks_mm_cpumask() has all the issues fixed, so let's use it.

Suggested-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 3eaa73b
Raw File
Kconfig.debug
menu "Kernel hacking"

source "lib/Kconfig.debug"

config DEBUG_STACKOVERFLOW
	bool "Check for stack overflows"
	depends on DEBUG_KERNEL

config GDBSTUB
	bool "Remote GDB kernel debugging"
	depends on DEBUG_KERNEL
	select DEBUG_INFO
	select FRAME_POINTER
	help
	  If you say Y here, it will be possible to remotely debug the kernel
	  using gdb. This enlarges your kernel ELF image disk size by several
	  megabytes and requires a machine with more than 16 MB, better 32 MB
	  RAM to avoid excessive linking time. This is only useful for kernel
	  hackers. If unsure, say N.

choice
	prompt "GDB stub port"
	default GDBSTUB_UART1
	depends on GDBSTUB
	help
	  Select the on-CPU port used for GDB-stub

config GDBSTUB_UART0
	bool "/dev/ttyS0"

config GDBSTUB_UART1
	bool "/dev/ttyS1"

endchoice

config GDBSTUB_IMMEDIATE
	bool "Break into GDB stub immediately"
	depends on GDBSTUB
	help
	  If you say Y here, GDB stub will break into the program as soon as
	  possible, leaving the program counter at the beginning of
	  start_kernel() in init/main.c.

config GDB_CONSOLE
	bool "Console output to GDB"
	depends on GDBSTUB
	help
	  If you are using GDB for remote debugging over a serial port and
	  would like kernel messages to be formatted into GDB $O packets so
	  that GDB prints them as program output, say 'Y'.

endmenu
back to top