git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2255_FC5-vs2.0.2.2-rc9 patched with stable patch...
[linux-2.6.git]
/
arch
/
ppc
/
kernel
/
traps.c
diff --git
a/arch/ppc/kernel/traps.c
b/arch/ppc/kernel/traps.c
index
1c0d680
..
0193cc4
100644
(file)
--- a/
arch/ppc/kernel/traps.c
+++ b/
arch/ppc/kernel/traps.c
@@
-25,7
+25,6
@@
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h>
#include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h>
-#include <linux/config.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/prctl.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/prctl.h>
@@
-709,7
+708,7
@@
void single_step_exception(struct pt_regs *regs)
void alignment_exception(struct pt_regs *regs)
{
void alignment_exception(struct pt_regs *regs)
{
- int
fixed
;
+ int
sig, code, fixed = 0
;
fixed = fix_alignment(regs);
if (fixed == 1) {
fixed = fix_alignment(regs);
if (fixed == 1) {
@@
-718,14
+717,16
@@
void alignment_exception(struct pt_regs *regs)
return;
}
if (fixed == -EFAULT) {
return;
}
if (fixed == -EFAULT) {
- /* fixed == -EFAULT means the operand address was bad */
- if (user_mode(regs))
- _exception(SIGSEGV, regs, SEGV_ACCERR, regs->dar);
- else
- bad_page_fault(regs, regs->dar, SIGSEGV);
- return;
+ sig = SIGSEGV;
+ code = SEGV_ACCERR;
+ } else {
+ sig = SIGBUS;
+ code = BUS_ADRALN;
}
}
- _exception(SIGBUS, regs, BUS_ADRALN, regs->dar);
+ if (user_mode(regs))
+ _exception(sig, regs, code, regs->dar);
+ else
+ bad_page_fault(regs, regs->dar, sig);
}
void StackOverflow(struct pt_regs *regs)
}
void StackOverflow(struct pt_regs *regs)