[PATCH v2] x86: Preserve iopl on fork and execve

From: Alex Henrie
Date: Mon May 11 2015 - 19:38:49 EST


Signed-off-by: Alex Henrie <alexhenrie24@xxxxxxxxx>
Suggested-by: Doug Johnson <dougvj@xxxxxxxxxx>
---
arch/x86/kernel/process_32.c | 2 +-
arch/x86/kernel/process_64.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c
index 8ed2106..0ef7078 100644
--- a/arch/x86/kernel/process_32.c
+++ b/arch/x86/kernel/process_32.c
@@ -205,7 +205,7 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
regs->cs = __USER_CS;
regs->ip = new_ip;
regs->sp = new_sp;
- regs->flags = X86_EFLAGS_IF;
+ regs->flags = X86_EFLAGS_IF | (X86_EFLAGS_IOPL & regs->flags);
force_iret();
}
EXPORT_SYMBOL_GPL(start_thread);
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index ddfdbf7..e21eda2 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -238,7 +238,7 @@ start_thread_common(struct pt_regs *regs, unsigned long new_ip,
regs->sp = new_sp;
regs->cs = _cs;
regs->ss = _ss;
- regs->flags = X86_EFLAGS_IF;
+ regs->flags = X86_EFLAGS_IF | (X86_EFLAGS_IOPL & regs->flags);
force_iret();
}

--
2.4.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/