It wasn't just x86-64 that had hardcoded VM_FAULT_xxx numbers
Fix up arm26, cris, frv, m68k, parisc and sh64 too..
This commit is contained in:
@@ -176,12 +176,12 @@ survive:
|
|||||||
* Handle the "normal" cases first - successful and sigbus
|
* Handle the "normal" cases first - successful and sigbus
|
||||||
*/
|
*/
|
||||||
switch (fault) {
|
switch (fault) {
|
||||||
case 2:
|
case VM_FAULT_MAJOR:
|
||||||
tsk->maj_flt++;
|
tsk->maj_flt++;
|
||||||
return fault;
|
return fault;
|
||||||
case 1:
|
case VM_FAULT_MINOR:
|
||||||
tsk->min_flt++;
|
tsk->min_flt++;
|
||||||
case 0:
|
case VM_FAULT_SIGBUS:
|
||||||
return fault;
|
return fault;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,14 +226,11 @@ int do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
|
|||||||
/*
|
/*
|
||||||
* Handle the "normal" case first
|
* Handle the "normal" case first
|
||||||
*/
|
*/
|
||||||
if (fault > 0)
|
switch (fault) {
|
||||||
|
case VM_FAULT_MINOR:
|
||||||
|
case VM_FAULT_MAJOR:
|
||||||
return 0;
|
return 0;
|
||||||
|
case VM_FAULT_SIGBUS:
|
||||||
/*
|
|
||||||
* We had some memory, but were unable to
|
|
||||||
* successfully fix up this page fault.
|
|
||||||
*/
|
|
||||||
if (fault == 0){
|
|
||||||
goto do_sigbus;
|
goto do_sigbus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -284,13 +284,13 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
switch (handle_mm_fault(mm, vma, address, writeaccess & 1)) {
|
switch (handle_mm_fault(mm, vma, address, writeaccess & 1)) {
|
||||||
case 1:
|
case VM_FAULT_MINOR:
|
||||||
tsk->min_flt++;
|
tsk->min_flt++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VM_FAULT_MAJOR:
|
||||||
tsk->maj_flt++;
|
tsk->maj_flt++;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case VM_FAULT_SIGBUS:
|
||||||
goto do_sigbus;
|
goto do_sigbus;
|
||||||
default:
|
default:
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
|
@@ -163,13 +163,13 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
|
|||||||
* the fault.
|
* the fault.
|
||||||
*/
|
*/
|
||||||
switch (handle_mm_fault(mm, vma, ear0, write)) {
|
switch (handle_mm_fault(mm, vma, ear0, write)) {
|
||||||
case 1:
|
case VM_FAULT_MINOR:
|
||||||
current->min_flt++;
|
current->min_flt++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VM_FAULT_MAJOR:
|
||||||
current->maj_flt++;
|
current->maj_flt++;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case VM_FAULT_SIGBUS:
|
||||||
goto do_sigbus;
|
goto do_sigbus;
|
||||||
default:
|
default:
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
|
@@ -160,13 +160,13 @@ good_area:
|
|||||||
printk("handle_mm_fault returns %d\n",fault);
|
printk("handle_mm_fault returns %d\n",fault);
|
||||||
#endif
|
#endif
|
||||||
switch (fault) {
|
switch (fault) {
|
||||||
case 1:
|
case VM_FAULT_MINOR:
|
||||||
current->min_flt++;
|
current->min_flt++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VM_FAULT_MAJOR:
|
||||||
current->maj_flt++;
|
current->maj_flt++;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case VM_FAULT_SIGBUS:
|
||||||
goto bus_err;
|
goto bus_err;
|
||||||
default:
|
default:
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
|
@@ -178,17 +178,17 @@ good_area:
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
switch (handle_mm_fault(mm, vma, address, (acc_type & VM_WRITE) != 0)) {
|
switch (handle_mm_fault(mm, vma, address, (acc_type & VM_WRITE) != 0)) {
|
||||||
case 1:
|
case VM_FAULT_MINOR:
|
||||||
++current->min_flt;
|
++current->min_flt;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VM_FAULT_MAJOR:
|
||||||
++current->maj_flt;
|
++current->maj_flt;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case VM_FAULT_SIGBUS:
|
||||||
/*
|
/*
|
||||||
* We ran out of memory, or some other thing happened
|
* We hit a hared mapping outside of the file, or some
|
||||||
* to us that made us unable to handle the page fault
|
* other thing happened to us that made us unable to
|
||||||
* gracefully.
|
* handle the page fault gracefully.
|
||||||
*/
|
*/
|
||||||
goto bad_area;
|
goto bad_area;
|
||||||
default:
|
default:
|
||||||
|
@@ -223,13 +223,13 @@ good_area:
|
|||||||
*/
|
*/
|
||||||
survive:
|
survive:
|
||||||
switch (handle_mm_fault(mm, vma, address, writeaccess)) {
|
switch (handle_mm_fault(mm, vma, address, writeaccess)) {
|
||||||
case 1:
|
case VM_FAULT_MINOR:
|
||||||
tsk->min_flt++;
|
tsk->min_flt++;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case VM_FAULT_MAJOR:
|
||||||
tsk->maj_flt++;
|
tsk->maj_flt++;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case VM_FAULT_SIGBUS:
|
||||||
goto do_sigbus;
|
goto do_sigbus;
|
||||||
default:
|
default:
|
||||||
goto out_of_memory;
|
goto out_of_memory;
|
||||||
|
Reference in New Issue
Block a user