diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-02 20:12:06 +0200 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-20 15:50:17 +0200 |
commit | e76623d69408d0bd66a296c6ee5eae1b17a6adfc (patch) | |
tree | 91011050463a05f2950ccf12a1c2a7287bbae1a5 /arch/x86/kernel/process_32.c | |
parent | Merge branch 'for-linus' of git://git.kernel.dk/linux-block (diff) | |
download | linux-e76623d69408d0bd66a296c6ee5eae1b17a6adfc.tar.xz linux-e76623d69408d0bd66a296c6ee5eae1b17a6adfc.zip |
x86: get rid of TIF_IRET hackery
TIF_NOTIFY_RESUME will work in precisely the same way; all that
is achieved by TIF_IRET is appearing that there's some work to be
done, so we end up on the iret exit path. Just use NOTIFY_RESUME.
And for execve() do that in 32bit start_thread(), not sys_execve()
itself.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/x86/kernel/process_32.c')
-rw-r--r-- | arch/x86/kernel/process_32.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 516fa186121b..75fcad146def 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c @@ -194,6 +194,11 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp) * Free the old FP and other extended state */ free_thread_xstate(current); + /* + * force it to the iret return path by making it look as if there was + * some work pending. + */ + set_thread_flag(TIF_NOTIFY_RESUME); } EXPORT_SYMBOL_GPL(start_thread); |