提交 6e346228 编写于 作者: L Linus Torvalds

It wasn't just x86-64 that had hardcoded VM_FAULT_xxx numbers

Fix up arm26, cris, frv, m68k, parisc and sh64 too..
上级 96800216
...@@ -176,12 +176,12 @@ __do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr, ...@@ -176,12 +176,12 @@ __do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
* 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) ...@@ -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, ...@@ -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 ...@@ -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 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -160,13 +160,13 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
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 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, ...@@ -178,17 +178,17 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
*/ */
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 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess, ...@@ -223,13 +223,13 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
*/ */
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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册