aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/traps.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/traps.c')
-rw-r--r--arch/powerpc/kernel/traps.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c
index 064a52564692..91a6e04d9741 100644
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -658,7 +658,7 @@ static int emulate_instruction(struct pt_regs *regs)
658 u32 instword; 658 u32 instword;
659 u32 rd; 659 u32 rd;
660 660
661 if (!user_mode(regs)) 661 if (!user_mode(regs) || (regs->msr & MSR_LE))
662 return -EINVAL; 662 return -EINVAL;
663 CHECK_FULL_REGS(regs); 663 CHECK_FULL_REGS(regs);
664 664
@@ -805,9 +805,11 @@ void __kprobes program_check_exception(struct pt_regs *regs)
805 805
806void alignment_exception(struct pt_regs *regs) 806void alignment_exception(struct pt_regs *regs)
807{ 807{
808 int fixed; 808 int fixed = 0;
809 809
810 fixed = fix_alignment(regs); 810 /* we don't implement logging of alignment exceptions */
811 if (!(current->thread.align_ctl & PR_UNALIGN_SIGBUS))
812 fixed = fix_alignment(regs);
811 813
812 if (fixed == 1) { 814 if (fixed == 1) {
813 regs->nip += 4; /* skip over emulated instruction */ 815 regs->nip += 4; /* skip over emulated instruction */