Files
linux/kernel
Jan Kiszka 5c17daa893 compat: Fix RT signal mask corruption via sigprocmask
commit b7dafa0ef3 upstream.

compat_sys_sigprocmask reads a smaller signal mask from userspace than
sigprogmask accepts for setting.  So the high word of blocked.sig[0]
will be cleared, releasing any potentially blocked RT signal.

This was discovered via userspace code that relies on get/setcontext.
glibc's i386 versions of those functions use sigprogmask instead of
rt_sigprogmask to save/restore signal mask and caused RT signal
unblocking this way.

As suggested by Linus, this replaces the sys_sigprocmask based compat
version with one that open-codes the required logic, including the merge
of the existing blocked set with the new one provided on SIG_SETMASK.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-05-21 09:40:04 -07:00
..
2011-08-04 21:58:35 -07:00
2011-03-31 11:26:23 -03:00
2011-03-14 09:15:23 -04:00
2010-10-30 01:42:19 -04:00
2011-05-19 18:51:57 +10:00
2011-05-17 23:19:17 +02:00
2011-03-31 11:26:23 -03:00
2011-05-26 17:12:34 -07:00
2012-04-02 09:27:20 -07:00
2011-05-26 17:12:34 -07:00
2011-03-31 11:26:23 -03:00
2011-04-18 10:35:30 -07:00
2011-05-24 12:10:51 +02:00
2011-05-20 12:50:29 -07:00
2011-03-31 11:26:23 -03:00
2011-04-24 13:18:38 +02:00
2011-03-23 19:46:51 -07:00
2011-12-21 12:57:40 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00