diff options
Diffstat (limited to 'arch/powerpc/kernel/process.c')
| -rw-r--r-- | arch/powerpc/kernel/process.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index f698aa77127e..706090c99f47 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
| @@ -45,6 +45,7 @@ | |||
| 45 | #include <asm/prom.h> | 45 | #include <asm/prom.h> |
| 46 | #include <asm/machdep.h> | 46 | #include <asm/machdep.h> |
| 47 | #include <asm/time.h> | 47 | #include <asm/time.h> |
| 48 | #include <asm/syscalls.h> | ||
| 48 | #ifdef CONFIG_PPC64 | 49 | #ifdef CONFIG_PPC64 |
| 49 | #include <asm/firmware.h> | 50 | #include <asm/firmware.h> |
| 50 | #endif | 51 | #endif |
| @@ -362,7 +363,11 @@ static void show_instructions(struct pt_regs *regs) | |||
| 362 | if (!(i % 8)) | 363 | if (!(i % 8)) |
| 363 | printk("\n"); | 364 | printk("\n"); |
| 364 | 365 | ||
| 365 | if (BAD_PC(pc) || __get_user(instr, (unsigned int *)pc)) { | 366 | /* We use __get_user here *only* to avoid an OOPS on a |
| 367 | * bad address because the pc *should* only be a | ||
| 368 | * kernel address. | ||
| 369 | */ | ||
| 370 | if (BAD_PC(pc) || __get_user(instr, (unsigned int __user *)pc)) { | ||
| 366 | printk("XXXXXXXX "); | 371 | printk("XXXXXXXX "); |
| 367 | } else { | 372 | } else { |
| 368 | if (regs->nip == pc) | 373 | if (regs->nip == pc) |
| @@ -765,7 +770,7 @@ out: | |||
| 765 | return error; | 770 | return error; |
| 766 | } | 771 | } |
| 767 | 772 | ||
| 768 | static int validate_sp(unsigned long sp, struct task_struct *p, | 773 | int validate_sp(unsigned long sp, struct task_struct *p, |
| 769 | unsigned long nbytes) | 774 | unsigned long nbytes) |
| 770 | { | 775 | { |
| 771 | unsigned long stack_page = (unsigned long)task_stack_page(p); | 776 | unsigned long stack_page = (unsigned long)task_stack_page(p); |
| @@ -803,6 +808,8 @@ static int validate_sp(unsigned long sp, struct task_struct *p, | |||
| 803 | #define FRAME_MARKER 2 | 808 | #define FRAME_MARKER 2 |
| 804 | #endif | 809 | #endif |
| 805 | 810 | ||
| 811 | EXPORT_SYMBOL(validate_sp); | ||
| 812 | |||
| 806 | unsigned long get_wchan(struct task_struct *p) | 813 | unsigned long get_wchan(struct task_struct *p) |
| 807 | { | 814 | { |
| 808 | unsigned long ip, sp; | 815 | unsigned long ip, sp; |
