summaryrefslogtreecommitdiffstats
path: root/include/mtd/mtd-user.h
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2012-05-10 10:04:36 -0300
committerLinus Torvalds <torvalds@linux-foundation.org>2012-05-10 08:58:33 -0700
commitb7dafa0ef3145c31d7753be0a08b3cbda51f0209 (patch)
tree9beb3c3fcd8b5439ee24c0f3e1eb0c78e897fb2f /include/mtd/mtd-user.h
parent7ee94d97aafacf5a019b3578e0eae6daa2e2bcd5 (diff)
downloadop-kernel-dev-b7dafa0ef3145c31d7753be0a08b3cbda51f0209.zip
op-kernel-dev-b7dafa0ef3145c31d7753be0a08b3cbda51f0209.tar.gz
compat: Fix RT signal mask corruption via sigprocmask
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>
Diffstat (limited to 'include/mtd/mtd-user.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud