Patch "x86/iopl: Fix iopl capability check on Xen PV" has been added to the 3.14-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
x86/iopl: Fix iopl capability check on Xen PV
to the 3.14-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-iopl-fix-iopl-capability-check-on-xen-pv.patch
and it can be found in the queue-3.14 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c29016cf41fe9fa994a5ecca607cf5f1cd98801eMon Sep 17 00:00:00 2001
From: Andy Lutomirski <[email protected]>
Date: Wed, 16 Mar 2016 14:14:22 -0700
Subject: x86/iopl: Fix iopl capability check on Xen PV
From: Andy Lutomirski <[email protected]>
commit c29016cf41fe9fa994a5ecca607cf5f1cd98801e upstream.
iopl(3) is supposed to work if iopl is already 3, even if unprivileged. This didn't work right on Xen PV. Fix it.
--- arch/x86/kernel/ioport.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
arch/x86/kernel/ioport.c +9 -3
@@ -96,9 +96,14 @@ asmlinkage long sys_ioperm(unsigned long SYSCALL_DEFINE1(iopl, unsigned int, level) {struct pt_regs *regs =current_pt_regs (); -unsigned int old = (regs->flags >>12 ) &3 ;struct thread_struct *t = ¤t->thread; +/* +* Careful: the IOPL bits in regs->flags are undefined under Xen PV +* and changing them has no effect. +*/ +unsigned int old = t->iopl >>X86_EFLAGS_IOPL_BIT ; +if (level >3 )return -EINVAL ;/* Trying to gain more privileges? */
@@ -106,8 +111,9 @@ SYSCALL_DEFINE1(iopl, unsigned int, leveif (!capable (CAP_SYS_RAWIO ))return -EPERM ; } - regs->flags = (regs->flags & ~X86_EFLAGS_IOPL ) | (level <<12 ); - t->iopl = level <<12 ; + regs->flags = (regs->flags & ~X86_EFLAGS_IOPL ) | + (level <<X86_EFLAGS_IOPL_BIT ); + t->iopl = level <<X86_EFLAGS_IOPL_BIT ;set_iopl_mask (t->iopl);return 0 ;
Patches currently in stable-queue which might be from [email protected] are
queue-3.14/x86-iopl-fix-iopl-capability-check-on-xen-pv.patch