public inbox for linux-m68k@lists.linux-m68k.org
 help / color / mirror / Atom feed
* [patch 07/14] m68k: invoke oom-killer from page fault
       [not found] <20100422160613.723698029@suse.de>
@ 2010-04-22 16:06 ` npiggin
  2010-04-22 20:53   ` David Rientjes
  2010-04-23  7:21   ` Geert Uytterhoeven
  0 siblings, 2 replies; 3+ messages in thread
From: npiggin @ 2010-04-22 16:06 UTC (permalink / raw)
  To: linux-arch; +Cc: David Rientjes, Andrew Morton, linux-m68k, Geert Uytterhoeven

[-- Attachment #1: m68k-pagefault-use-oom.patch --]
[-- Type: text/plain, Size: 937 bytes --]

As explained in commit 1c0fe6e3bd, we want to call the architecture independent
oom killer when getting an unexplained OOM from handle_mm_fault, rather than
simply killing current.

Cc: linux-m68k@lists.linux-m68k.org
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-arch@vger.kernel.org
Signed-off-by: Nick Piggin <npiggin@suse.de>
---
Index: linux-2.6/arch/m68k/mm/fault.c
===================================================================
--- linux-2.6.orig/arch/m68k/mm/fault.c
+++ linux-2.6/arch/m68k/mm/fault.c
@@ -180,15 +180,10 @@ good_area:
  */
 out_of_memory:
 	up_read(&mm->mmap_sem);
-	if (is_global_init(current)) {
-		yield();
-		down_read(&mm->mmap_sem);
-		goto survive;
-	}
-
-	printk("VM: killing process %s\n", current->comm);
-	if (user_mode(regs))
-		do_group_exit(SIGKILL);
+	if (!user_mode(regs))
+		goto no_context;
+	pagefault_out_of_memory();
+	return;
 
 no_context:
 	current->thread.signo = SIGBUS;

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch 07/14] m68k: invoke oom-killer from page fault
  2010-04-22 16:06 ` [patch 07/14] m68k: invoke oom-killer from page fault npiggin
@ 2010-04-22 20:53   ` David Rientjes
  2010-04-23  7:21   ` Geert Uytterhoeven
  1 sibling, 0 replies; 3+ messages in thread
From: David Rientjes @ 2010-04-22 20:53 UTC (permalink / raw)
  To: npiggin; +Cc: linux-arch, Andrew Morton, linux-m68k, Geert Uytterhoeven

On Fri, 23 Apr 2010, npiggin@suse.de wrote:

> As explained in commit 1c0fe6e3bd, we want to call the architecture independent
> oom killer when getting an unexplained OOM from handle_mm_fault, rather than
> simply killing current.
> 
> Cc: linux-m68k@lists.linux-m68k.org
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Cc: linux-arch@vger.kernel.org
> Signed-off-by: Nick Piggin <npiggin@suse.de>

Acked-by: David Rientjes <rientjes@google.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [patch 07/14] m68k: invoke oom-killer from page fault
  2010-04-22 16:06 ` [patch 07/14] m68k: invoke oom-killer from page fault npiggin
  2010-04-22 20:53   ` David Rientjes
@ 2010-04-23  7:21   ` Geert Uytterhoeven
  1 sibling, 0 replies; 3+ messages in thread
From: Geert Uytterhoeven @ 2010-04-23  7:21 UTC (permalink / raw)
  To: npiggin; +Cc: linux-arch, David Rientjes, Andrew Morton, linux-m68k

On Thu, Apr 22, 2010 at 18:06,  <npiggin@suse.de> wrote:
> As explained in commit 1c0fe6e3bd, we want to call the architecture independent
> oom killer when getting an unexplained OOM from handle_mm_fault, rather than
> simply killing current.
>
> Cc: linux-m68k@lists.linux-m68k.org
> Cc: Geert Uytterhoeven <geert@linux-m68k.org>
> Cc: linux-arch@vger.kernel.org
> Signed-off-by: Nick Piggin <npiggin@suse.de>
> ---
> Index: linux-2.6/arch/m68k/mm/fault.c
> ===================================================================
> --- linux-2.6.orig/arch/m68k/mm/fault.c
> +++ linux-2.6/arch/m68k/mm/fault.c
> @@ -180,15 +180,10 @@ good_area:
>  */
>  out_of_memory:
>        up_read(&mm->mmap_sem);
> -       if (is_global_init(current)) {
> -               yield();
> -               down_read(&mm->mmap_sem);
> -               goto survive;
> -       }
> -
> -       printk("VM: killing process %s\n", current->comm);
> -       if (user_mode(regs))
> -               do_group_exit(SIGKILL);
> +       if (!user_mode(regs))
> +               goto no_context;
> +       pagefault_out_of_memory();
> +       return;
>
>  no_context:
>        current->thread.signo = SIGBUS;

Will apply after unintroducing 2 compiler warnings::

diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
index 0adfcb6..2db6099 100644
--- a/arch/m68k/mm/fault.c
+++ b/arch/m68k/mm/fault.c
@@ -140,7 +140,6 @@ good_area:
 	 * the fault.
 	 */

- survive:
 	fault = handle_mm_fault(mm, vma, address, write ? FAULT_FLAG_WRITE : 0);
 #ifdef DEBUG
 	printk("handle_mm_fault returns %d\n",fault);
@@ -169,7 +168,7 @@ out_of_memory:
 	if (!user_mode(regs))
 		goto no_context;
 	pagefault_out_of_memory();
-	return;
+	return 0;

 no_context:
 	current->thread.signo = SIGBUS;

Gr{oetje,eeting}s,

						Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
							    -- Linus Torvalds

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-04-23  7:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20100422160613.723698029@suse.de>
2010-04-22 16:06 ` [patch 07/14] m68k: invoke oom-killer from page fault npiggin
2010-04-22 20:53   ` David Rientjes
2010-04-23  7:21   ` Geert Uytterhoeven

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox