]> git.karo-electronics.de Git - karo-tx-linux.git/commit
x86: switch uses of TIF_IRET to TIF_NOTIFY_RESUME, kill TIF_IRET
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 7 May 2012 21:30:22 +0000 (17:30 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Thu, 21 Jun 2012 04:02:42 +0000 (08:02 +0400)
commit02bf6b04fcd5b0e148cd778445a5387cc985f3e5
tree1e559bcfc2dca7053c7415b848669352e9aeb23d
parent19e9de8095f460b2170649889188a94611a24280
x86: switch uses of TIF_IRET to TIF_NOTIFY_RESUME, kill TIF_IRET

TIF_IRET(i386) is used to force return to userland via iret, even if
we'd entered the kernel via sysenter.  This, to put it mildly, is a
fucking ugly hack.  Essentially, it acts as a silent duplicate of
NOTIFY_RESUME.  do_notify_resume() clears it (as it clears NOTIFY_RESUME
itself).  And i386 has glue treat it as something indistinguishable from
NOTIFY_RESUME, never mentioning either explicitly.  _Any_ path going
through do_notify_resume() there will leave via iret - sysret is for
fast path only.  So setting TIF_IRET (or, for that matter, TIF_NOTIFY_RESUME)
has an effect of forcing exit via iret.

That had been obfuscated just enough to have it copied to hexagon, m32r,
microblaze and xtensa.  Neither of those ever sets it.  Or has an analog
of the x86 issues that make forcing exit via iret needed there.  Pure and
simple cargo-cult programming...

Just kill the undocumented bugger...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
arch/x86/include/asm/thread_info.h
arch/x86/kernel/process.c
arch/x86/kernel/signal.c
arch/x86/kernel/vm86_32.c