x86: get rid of calling do_notify_resume() when returning to kernel mode
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 30 Apr 2012 22:24:46 +0000 (18:24 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 1 Jun 2012 17:01:51 +0000 (13:01 -0400)
commit44fbbb3dc687c9709a6f2236197316e5c79ab1eb
treed3c995b1cb7e3f9ac5af09b8d78f6c839a65f35a
parent29bf5dd895219e5111099908040aecfc1509f9bb
x86: get rid of calling do_notify_resume() when returning to kernel mode

If we end up calling do_notify_resume() with !user_mode(refs), it
does nothing (do_signal() explicitly bails out and we can't get there
with TIF_NOTIFY_RESUME in such situations).  Then we jump to
resume_userspace_sig, which rechecks the same thing and bails out
to resume_kernel, thus breaking the loop.

It's easier and cheaper to check *before* calling do_notify_resume()
and bail out to resume_kernel immediately.  And kill the check in
do_signal()...

Note that on amd64 we can't get there with !user_mode() at all - asm
glue takes care of that.

Acked-and-reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/x86/kernel/entry_32.S
arch/x86/kernel/signal.c