aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext3
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2012-05-10 10:04:36 -0300
committerBen Hutchings <ben@decadent.org.uk>2012-05-31 00:43:51 +0100
commit13918f54a0987a9bcec568dd1c6300f1e8b1d05a (patch)
treec28bfd7a2bd863196a2be7e6a96c9cd7f36a95e2 /fs/ext3
parentb07291bbba3a0ce31a2a35b34b1e3e79c22e4b5b (diff)
downloadkernel_samsung_smdk4412-13918f54a0987a9bcec568dd1c6300f1e8b1d05a.zip
kernel_samsung_smdk4412-13918f54a0987a9bcec568dd1c6300f1e8b1d05a.tar.gz
kernel_samsung_smdk4412-13918f54a0987a9bcec568dd1c6300f1e8b1d05a.tar.bz2
compat: Fix RT signal mask corruption via sigprocmask
commit b7dafa0ef3145c31d7753be0a08b3cbda51f0209 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: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'fs/ext3')
0 files changed, 0 insertions, 0 deletions