diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-06-04 16:59:44 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-06-04 16:59:44 +0000 |
commit | f8e9aa0b6f30ba9cd26d686c335044620a65e452 (patch) | |
tree | d5839b7123a369eb19e89fcddc097d6266ecd3ce /xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c | |
parent | 8f09f5ed1674ddf635c6ac26afe785cb3a80f77d (diff) | |
download | xen-f8e9aa0b6f30ba9cd26d686c335044620a65e452.tar.gz xen-f8e9aa0b6f30ba9cd26d686c335044620a65e452.tar.bz2 xen-f8e9aa0b6f30ba9cd26d686c335044620a65e452.zip |
bitkeeper revision 1.253 (3ede2580BOyG2X8oTsgB7U5xY-U9XQ)
processor.h, setup.c, process.c, ioport.c, head.S:
Yet another IOPL fix -- tested this time :-)
Diffstat (limited to 'xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c')
-rw-r--r-- | xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c index b86f8ee4d5..7b30b8dcf2 100644 --- a/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c +++ b/xenolinux-2.4.21-pre4-sparse/arch/xeno/kernel/ioport.c @@ -16,7 +16,7 @@ asmlinkage int sys_iopl(unsigned long unused) { struct pt_regs *regs = (struct pt_regs *)&unused; unsigned int new_io_pl = regs->ebx & 3; - unsigned int old_io_pl = (regs->eflags >> 12) & 3; + unsigned int old_io_pl = current->thread.io_pl; unsigned int new_hypercall_pl = (regs->ebx >> 2) & 3; unsigned int old_hypercall_pl = current->thread.hypercall_pl; @@ -32,11 +32,11 @@ asmlinkage int sys_iopl(unsigned long unused) /* Maintain OS privileges even if user attempts to relinquish them. */ if ( new_hypercall_pl == 0 ) new_hypercall_pl = 1; - if ( (new_io_pl == 0) && !(start_info.flags & SIF_PRIVILEGED) ) + if ( (new_io_pl == 0) && (start_info.flags & SIF_PRIVILEGED) ) new_io_pl = 1; /* Change our version of the privilege levels. */ - regs->eflags = (regs->eflags & 0xffffcfff) | (old_io_pl << 12); + current->thread.io_pl = new_io_pl; current->thread.hypercall_pl = new_hypercall_pl; /* Force the change at ring 0. */ |