git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Pull sbs into release branch
[pandora-kernel.git]
/
arch
/
m68k
/
mm
/
fault.c
diff --git
a/arch/m68k/mm/fault.c
b/arch/m68k/mm/fault.c
index
aec1527
..
578b48f
100644
(file)
--- a/
arch/m68k/mm/fault.c
+++ b/
arch/m68k/mm/fault.c
@@
-99,7
+99,7
@@
int do_page_fault(struct pt_regs *regs, unsigned long address,
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
* If we're in an interrupt or have no user
* context, we must not take the fault..
*/
- if (in_
interrupt
() || !mm)
+ if (in_
atomic
() || !mm)
goto no_context;
down_read(&mm->mmap_sem);
goto no_context;
down_read(&mm->mmap_sem);
@@
-144,7
+144,7
@@
good_area:
case 1: /* read, present */
goto acc_err;
case 0: /* read, not present */
case 1: /* read, present */
goto acc_err;
case 0: /* read, not present */
- if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
+ if (!(vma->vm_flags & (VM_READ | VM_EXEC
| VM_WRITE
)))
goto acc_err;
}
goto acc_err;
}
@@
-159,18
+159,17
@@
good_area:
#ifdef DEBUG
printk("handle_mm_fault returns %d\n",fault);
#endif
#ifdef DEBUG
printk("handle_mm_fault returns %d\n",fault);
#endif
- switch (fault) {
- case VM_FAULT_MINOR:
- current->min_flt++;
- break;
- case VM_FAULT_MAJOR:
- current->maj_flt++;
- break;
- case VM_FAULT_SIGBUS:
- goto bus_err;
- default:
- goto out_of_memory;
+ if (unlikely(fault & VM_FAULT_ERROR)) {
+ if (fault & VM_FAULT_OOM)
+ goto out_of_memory;
+ else if (fault & VM_FAULT_SIGBUS)
+ goto bus_err;
+ BUG();
}
}
+ if (fault & VM_FAULT_MAJOR)
+ current->maj_flt++;
+ else
+ current->min_flt++;
up_read(&mm->mmap_sem);
return 0;
up_read(&mm->mmap_sem);
return 0;
@@
-181,7
+180,7
@@
good_area:
*/
out_of_memory:
up_read(&mm->mmap_sem);
*/
out_of_memory:
up_read(&mm->mmap_sem);
- if (
current->pid == 1
) {
+ if (
is_init(current)
) {
yield();
down_read(&mm->mmap_sem);
goto survive;
yield();
down_read(&mm->mmap_sem);
goto survive;