summaryrefslogtreecommitdiff
path: root/arch/mips/mm/fault.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-01-31 15:52:02 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-31 15:52:02 -0800
commitc5e18af910f4bc2e3d0732ea98b99c0fd884e73c (patch)
treef6624e0fb83d482d4fcb265c616ae3f5e5ea53f1 /arch/mips/mm/fault.c
parent878b8619f711280fd05845e21956434b5e588cc4 (diff)
parent2d2eca4d11933bd37a4944aae06e6122efffaea8 (diff)
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (27 commits) MIPS: Alchemy: time.c build fix MIPS: RB532: Export rb532_gpio_set_func() MIPS: RB532: Update headers MIPS: RB532: Simplify dev3 init MIPS: RB532: Remove {get,set}_434_reg() MIPS: RB532: Move dev3 init code to devices.c MIPS: RB532: Fix set_latch_u5() MIPS: RB532: Fix init of rb532_dev3_ctl_res MIPS: RB532: Use driver_data instead of platform_data MIPS: RB532: Detect uart type, add platform device MIPS: RB532: remove useless CF GPIO initialisation MIPS: RB532: Auto disable GPIO alternate function MIPS: RB532: Add set_type() function to IRQ struct. MIPS: RC32434: Define io_map_base for PCI controller MIPS: RB532: Fix bit swapping in rb532_set_bit() MIPS: Use hardware watchpoints on all R1 and R2 CPUs. MIPS: Read watch registers with interrupts disabled. MIPS: Fix a typo in watchpoint register structure. MIPS: TXx9: Add support for TX4939 internal RTC MIPS: R2: Fix broken installation of cache error handler. ...
Diffstat (limited to 'arch/mips/mm/fault.c')
-rw-r--r--arch/mips/mm/fault.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index fa636fc6b7b9..55767ad9f00e 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -97,7 +97,6 @@ good_area:
goto bad_area;
}
-survive:
/*
* If for any reason at all we couldn't handle the fault,
* make sure we exit gracefully rather than endlessly redo
@@ -167,21 +166,13 @@ no_context:
field, regs->regs[31]);
die("Oops", regs);
-/*
- * We ran out of memory, or some other thing happened to us that made
- * us unable to handle the page fault gracefully.
- */
out_of_memory:
- up_read(&mm->mmap_sem);
- if (is_global_init(tsk)) {
- yield();
- down_read(&mm->mmap_sem);
- goto survive;
- }
- printk("VM: killing process %s\n", tsk->comm);
- if (user_mode(regs))
- do_group_exit(SIGKILL);
- goto no_context;
+ /*
+ * We ran out of memory, call the OOM killer, and return the userspace
+ * (which will retry the fault, or kill us if we got oom-killed).
+ */
+ pagefault_out_of_memory();
+ return;
do_sigbus:
up_read(&mm->mmap_sem);