summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2012-04-29 10:11:34 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2013-02-04 00:16:02 +0100
commit14203e19cbc562a79f49117c45c80639a1e65bdd (patch)
tree758937f82d73a963b9ed0f5979f303c1522195fa /mm
parentmicroblaze: evict the check for kernel_mode(regs) from do_notify_resume() (diff)
downloadlinux-14203e19cbc562a79f49117c45c80639a1e65bdd.tar.xz
linux-14203e19cbc562a79f49117c45c80639a1e65bdd.zip
microblaze: fix the horror with restarts of sigreturn()
solution a-la arm one - pick a callee-saved register (r30), set it non-zero when entering a syscall, have sigreturn wrapper zero it out and pass the value in it to do_notify_resume() as "in_syscall" (actually, "restarts allowed") argument. Note that we don't give a damn about ret_from_fork() - return value is not restart-worthy anyway. Possible remaining bug: on !MMU we still have _debug_exception() restartable. If it hits with -ERESTART_... accidentally in r3, fun happens. MMU does _not_ have _debug_exception() restartable. If that's decided to be a bug (as I strongly suspect it to be), we'll just need to replace setting r30 to 1 with setting r30 to 0 in !MMU _debug_exception(). Up to microblaze maintainers... [folded a fix from Michal] Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'mm')
0 files changed, 0 insertions, 0 deletions