Code Review
/
kvmfornfv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
These changes are a raw update to a vanilla kernel 4.1.10, with the
[kvmfornfv.git]
/
kernel
/
arch
/
x86
/
kernel
/
step.c
diff --git
a/kernel/arch/x86/kernel/step.c
b/kernel/arch/x86/kernel/step.c
index
9b4d51d
..
0ccb53a
100644
(file)
--- a/
kernel/arch/x86/kernel/step.c
+++ b/
kernel/arch/x86/kernel/step.c
@@
-5,6
+5,7
@@
#include <linux/mm.h>
#include <linux/ptrace.h>
#include <asm/desc.h>
#include <linux/mm.h>
#include <linux/ptrace.h>
#include <asm/desc.h>
+#include <asm/mmu_context.h>
unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs)
{
unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs)
{
@@
-27,13
+28,14
@@
unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *re
struct desc_struct *desc;
unsigned long base;
struct desc_struct *desc;
unsigned long base;
- seg
&= ~7UL
;
+ seg
>>= 3
;
mutex_lock(&child->mm->context.lock);
mutex_lock(&child->mm->context.lock);
- if (unlikely((seg >> 3) >= child->mm->context.size))
+ if (unlikely(!child->mm->context.ldt ||
+ seg >= child->mm->context.ldt->size))
addr = -1L; /* bogus selector, access would fault */
else {
addr = -1L; /* bogus selector, access would fault */
else {
- desc =
child->mm->context.ldt + seg
;
+ desc =
&child->mm->context.ldt->entries[seg]
;
base = get_desc_base(desc);
/* 16-bit code segment? */
base = get_desc_base(desc);
/* 16-bit code segment? */