mm/memory-failure.c: don't let collect_procs() skip over processes for MF_ACTION_REQUIRED
authorTony Luck <[email protected]>
Wed, 4 Jun 2014 23:11:01 +0000 (16:11 -0700)
committerLinus Torvalds <[email protected]>
Wed, 4 Jun 2014 23:54:13 +0000 (16:54 -0700)
commit74614de17db6fb472370c426d4f934d8d616edf2
tree44252cb1eb9034d4d372ee6fa84a23123f5c1549
parenta70ffcac741d31a406c1d2b832ae43d658e7e1cf
mm/memory-failure.c: don't let collect_procs() skip over processes for MF_ACTION_REQUIRED

When Linux sees an "action optional" machine check (where h/w has reported
an error that is not in the current execution path) we generally do not
want to signal a process, since most processes do not have a SIGBUS
handler - we'd just prematurely terminate the process for a problem that
they might never actually see.

task_early_kill() decides whether to consider a process - and it checks
whether this specific process has been marked for early signals with
"prctl", or if the system administrator has requested early signals for
all processes using /proc/sys/vm/memory_failure_early_kill.

But for MF_ACTION_REQUIRED case we must not defer.  The error is in the
execution path of the current thread so we must send the SIGBUS
immediatley.

Fix by passing a flag argument through collect_procs*() to
task_early_kill() so it knows whether we can defer or must take action.

Signed-off-by: Tony Luck <[email protected]>
Signed-off-by: Naoya Horiguchi <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Chen Gong <[email protected]>
Cc: <[email protected]> [3.2+]
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
mm/memory-failure.c