All of lore.kernel.org
 help / color / mirror / Atom feed
* + oom-kill-init-lead-panic.patch added to -mm tree
@ 2015-12-02 23:07 akpm
  2015-12-04  2:07 ` Ben Hutchings
  0 siblings, 1 reply; 7+ messages in thread
From: akpm @ 2015-12-02 23:07 UTC (permalink / raw)
  To: chenjie6, lizefan, mhocko, rientjes, stable, mm-commits


The patch titled
     Subject: mm/oom_kill.c: avoid killing init
has been added to the -mm tree.  Its filename is
     oom-kill-init-lead-panic.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/oom-kill-init-lead-panic.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/oom-kill-init-lead-panic.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Chen Jie <chenjie6@huawei.com>
Subject: mm/oom_kill.c: avoid killing init

When an oom killing happens we can see:

Out of memory: Kill process 9134 (init) score 3 or sacrifice child
Killed process 9134 (init) total-vm:1868kB, anon-rss:84kB, file-rss:572kB
Kill process 1 (init) sharing same memory
...
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009

That's because the busybox init will vfork a process then
oom_kill_process() finfs the init process instead of its children, because
their mm is the same when using vfork.

Signed-off-by: Chen Jie <chenjie6@huawei.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Li Zefan <lizefan@huawei.com>
Cc: David Rientjes <rientjes@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/oom_kill.c |    2 ++
 1 file changed, 2 insertions(+)

diff -puN mm/oom_kill.c~oom-kill-init-lead-panic mm/oom_kill.c
--- a/mm/oom_kill.c~oom-kill-init-lead-panic
+++ a/mm/oom_kill.c
@@ -608,6 +608,8 @@ void oom_kill_process(struct oom_control
 			continue;
 		if (unlikely(p->flags & PF_KTHREAD))
 			continue;
+		if (!is_global_init(p))
+			continue;
 		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
 			continue;
 
_

Patches currently in -mm which might be from chenjie6@huawei.com are

oom-kill-init-lead-panic.patch


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

* Re: + oom-kill-init-lead-panic.patch added to -mm tree
  2015-12-02 23:07 + oom-kill-init-lead-panic.patch added to -mm tree akpm
@ 2015-12-04  2:07 ` Ben Hutchings
  2015-12-04  2:16   ` Andrew Morton
  2015-12-04  9:43   ` Michal Hocko
  0 siblings, 2 replies; 7+ messages in thread
From: Ben Hutchings @ 2015-12-04  2:07 UTC (permalink / raw)
  To: akpm, chenjie6, lizefan, mhocko, rientjes, stable, mm-commits

[-- Attachment #1: Type: text/plain, Size: 911 bytes --]

On Wed, 2015-12-02 at 15:07 -0800, akpm@linux-foundation.org wrote:
> The patch titled
>      Subject: mm/oom_kill.c: avoid killing init
> has been added to the -mm tree.  Its filename is
>      oom-kill-init-lead-panic.patch
[...]
> --- a/mm/oom_kill.c~oom-kill-init-lead-panic
> +++ a/mm/oom_kill.c
> @@ -608,6 +608,8 @@ void oom_kill_process(struct oom_control
>  			continue;
>  		if (unlikely(p->flags & PF_KTHREAD))
>  			continue;
> +		if (!is_global_init(p))
> +			continue;
[...]

It looks like this has been forward-ported from an earlier version,
where the conditions were written as:

        if (A && B && ....)
                do_send_sig_info(...);

Since they are now written as 'if (!A) continue', the '!' needs to be
dropped from this one.

Ben.

-- 
Ben Hutchings
For every action, there is an equal and opposite criticism. - Harrison

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 811 bytes --]

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

* Re: + oom-kill-init-lead-panic.patch added to -mm tree
  2015-12-04  2:07 ` Ben Hutchings
@ 2015-12-04  2:16   ` Andrew Morton
  2015-12-04 10:04     ` Mark Brown
  2015-12-04  9:43   ` Michal Hocko
  1 sibling, 1 reply; 7+ messages in thread
From: Andrew Morton @ 2015-12-04  2:16 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: chenjie6, lizefan, mhocko, rientjes, stable, Mark Brown

On Fri, 04 Dec 2015 02:07:20 +0000 Ben Hutchings <ben@decadent.org.uk> wrote:

> On Wed, 2015-12-02 at 15:07 -0800, akpm@linux-foundation.org wrote:
> > The patch titled
> >      Subject: mm/oom_kill.c: avoid killing init
> > has been added to the -mm tree.  Its filename is
> >      oom-kill-init-lead-panic.patch
> [...]
> > --- a/mm/oom_kill.c~oom-kill-init-lead-panic
> > +++ a/mm/oom_kill.c
> > @@ -608,6 +608,8 @@ void oom_kill_process(struct oom_control
> >  			continue;
> >  		if (unlikely(p->flags & PF_KTHREAD))
> >  			continue;
> > +		if (!is_global_init(p))
> > +			continue;
> [...]
> 
> It looks like this has been forward-ported from an earlier version,
> where the conditions were written as:
> 
>         if (A && B && ....)
>                 do_send_sig_info(...);
> 
> Since they are now written as 'if (!A) continue', the '!' needs to be
> dropped from this one.
> 

argh, crap, yes, thanks.  And I just injected this into linux-next.

Mark, could you please add this?



From: Andrew Morton <akpm@linux-foundation.org>
Subject: oom-kill-init-lead-panic-fix

fix inverted test, per Ben

Cc: Chen Jie <chenjie6@huawei.com>
Cc: David Rientjes <rientjes@google.com>
Cc: Li Zefan <lizefan@huawei.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mark Brown <broonie@kernel.org>
Cc: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/oom_kill.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff -puN mm/oom_kill.c~oom-kill-init-lead-panic-fix mm/oom_kill.c
--- a/mm/oom_kill.c~oom-kill-init-lead-panic-fix
+++ a/mm/oom_kill.c
@@ -608,7 +608,7 @@ void oom_kill_process(struct oom_control
 			continue;
 		if (unlikely(p->flags & PF_KTHREAD))
 			continue;
-		if (!is_global_init(p))
+		if (is_global_init(p))
 			continue;
 		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
 			continue;
_


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

* Re: + oom-kill-init-lead-panic.patch added to -mm tree
  2015-12-04  2:07 ` Ben Hutchings
  2015-12-04  2:16   ` Andrew Morton
@ 2015-12-04  9:43   ` Michal Hocko
  1 sibling, 0 replies; 7+ messages in thread
From: Michal Hocko @ 2015-12-04  9:43 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: akpm, chenjie6, lizefan, rientjes, stable, mm-commits

On Fri 04-12-15 02:07:20, Ben Hutchings wrote:
> On Wed, 2015-12-02 at 15:07 -0800, akpm@linux-foundation.org wrote:
> > The patch titled
> > �����Subject: mm/oom_kill.c: avoid killing init
> > has been added to the -mm tree.��Its filename is
> > �����oom-kill-init-lead-panic.patch
> [...]
> > --- a/mm/oom_kill.c~oom-kill-init-lead-panic
> > +++ a/mm/oom_kill.c
> > @@ -608,6 +608,8 @@ void oom_kill_process(struct oom_control
> > �			continue;
> > �		if (unlikely(p->flags & PF_KTHREAD))
> > �			continue;
> > +		if (!is_global_init(p))
> > +			continue;
> [...]
> 
> It looks like this has been forward-ported from an earlier version,
> where the conditions were written as:
> 
> � � � � if (A && B && ....)
> � � � � � � � � do_send_sig_info(...);
> 
> Since they are now written as 'if (!A) continue', the '!' needs to be
> dropped from this one.

Already the first submission [1] I am aware of had it like this. I
should have noticed that. Slaps self. Sorry about that!

[1] http://lkml.kernel.org/r/1449037856-23990-1-git-send-email-chenjie6%40huawei.com
-- 
Michal Hocko
SUSE Labs

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

* Re: + oom-kill-init-lead-panic.patch added to -mm tree
  2015-12-04  2:16   ` Andrew Morton
@ 2015-12-04 10:04     ` Mark Brown
  0 siblings, 0 replies; 7+ messages in thread
From: Mark Brown @ 2015-12-04 10:04 UTC (permalink / raw)
  To: Andrew Morton; +Cc: Ben Hutchings, chenjie6, lizefan, mhocko, rientjes, stable

[-- Attachment #1: Type: text/plain, Size: 1213 bytes --]

On Thu, Dec 03, 2015 at 06:16:41PM -0800, Andrew Morton wrote:

> Mark, could you please add this?

I'm not going to do a build today, sorry - Stephen will be back on
Monday so he should be able to integrate it if you send it to him.

> From: Andrew Morton <akpm@linux-foundation.org>
> Subject: oom-kill-init-lead-panic-fix
> 
> fix inverted test, per Ben
> 
> Cc: Chen Jie <chenjie6@huawei.com>
> Cc: David Rientjes <rientjes@google.com>
> Cc: Li Zefan <lizefan@huawei.com>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: Mark Brown <broonie@kernel.org>
> Cc: Ben Hutchings <ben@decadent.org.uk>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
> 
>  mm/oom_kill.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff -puN mm/oom_kill.c~oom-kill-init-lead-panic-fix mm/oom_kill.c
> --- a/mm/oom_kill.c~oom-kill-init-lead-panic-fix
> +++ a/mm/oom_kill.c
> @@ -608,7 +608,7 @@ void oom_kill_process(struct oom_control
>  			continue;
>  		if (unlikely(p->flags & PF_KTHREAD))
>  			continue;
> -		if (!is_global_init(p))
> +		if (is_global_init(p))
>  			continue;
>  		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
>  			continue;
> _
> 
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

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

* + oom-kill-init-lead-panic.patch added to -mm tree
@ 2015-12-02 23:30 akpm
  0 siblings, 0 replies; 7+ messages in thread
From: akpm @ 2015-12-02 23:30 UTC (permalink / raw)
  To: chenjie6, lizefan, mhocko, rientjes, mm-commits


The patch titled
     Subject: mm/oom_kill.c: avoid attempting to kill init sharing same memory
has been added to the -mm tree.  Its filename is
     oom-kill-init-lead-panic.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/oom-kill-init-lead-panic.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/oom-kill-init-lead-panic.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Chen Jie <chenjie6@huawei.com>
Subject: mm/oom_kill.c: avoid attempting to kill init sharing same memory

It's possible that an oom killed victim shares an ->mm with the init
process and thus oom_kill_process() would end up trying to kill init as
well.

This has been shown in practice:

	Out of memory: Kill process 9134 (init) score 3 or sacrifice child
	Killed process 9134 (init) total-vm:1868kB, anon-rss:84kB, file-rss:572kB
	Kill process 1 (init) sharing same memory
	...
	Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009

And this will result in a kernel panic.

If a process is forked by init and selected for oom kill while still
sharing init_mm, then it's likely this system is in a recoverable state. 
However, it's better not to try to kill init and allow the machine to
panic due to unkillable processes.

[rientjes@google.com: rewrote changelog]
Signed-off-by: Chen Jie <chenjie6@huawei.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Li Zefan <lizefan@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/oom_kill.c |    2 ++
 1 file changed, 2 insertions(+)

diff -puN mm/oom_kill.c~oom-kill-init-lead-panic mm/oom_kill.c
--- a/mm/oom_kill.c~oom-kill-init-lead-panic
+++ a/mm/oom_kill.c
@@ -608,6 +608,8 @@ void oom_kill_process(struct oom_control
 			continue;
 		if (unlikely(p->flags & PF_KTHREAD))
 			continue;
+		if (!is_global_init(p))
+			continue;
 		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
 			continue;
 
_

Patches currently in -mm which might be from chenjie6@huawei.com are

oom-kill-init-lead-panic.patch


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

* + oom-kill-init-lead-panic.patch added to -mm tree
@ 2015-12-02 23:07 akpm
  0 siblings, 0 replies; 7+ messages in thread
From: akpm @ 2015-12-02 23:07 UTC (permalink / raw)
  To: chenjie6, lizefan, mhocko, rientjes, stable, mm-commits


The patch titled
     Subject: mm/oom_kill.c: avoid killing init
has been added to the -mm tree.  Its filename is
     oom-kill-init-lead-panic.patch

This patch should soon appear at
    http://ozlabs.org/~akpm/mmots/broken-out/oom-kill-init-lead-panic.patch
and later at
    http://ozlabs.org/~akpm/mmotm/broken-out/oom-kill-init-lead-panic.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

The -mm tree is included into linux-next and is updated
there every 3-4 working days

------------------------------------------------------
From: Chen Jie <chenjie6@huawei.com>
Subject: mm/oom_kill.c: avoid killing init

When an oom killing happens we can see:

Out of memory: Kill process 9134 (init) score 3 or sacrifice child
Killed process 9134 (init) total-vm:1868kB, anon-rss:84kB, file-rss:572kB
Kill process 1 (init) sharing same memory
...
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009

That's because the busybox init will vfork a process then
oom_kill_process() finfs the init process instead of its children, because
their mm is the same when using vfork.

Signed-off-by: Chen Jie <chenjie6@huawei.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Li Zefan <lizefan@huawei.com>
Cc: David Rientjes <rientjes@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 mm/oom_kill.c |    2 ++
 1 file changed, 2 insertions(+)

diff -puN mm/oom_kill.c~oom-kill-init-lead-panic mm/oom_kill.c
--- a/mm/oom_kill.c~oom-kill-init-lead-panic
+++ a/mm/oom_kill.c
@@ -608,6 +608,8 @@ void oom_kill_process(struct oom_control
 			continue;
 		if (unlikely(p->flags & PF_KTHREAD))
 			continue;
+		if (!is_global_init(p))
+			continue;
 		if (p->signal->oom_score_adj == OOM_SCORE_ADJ_MIN)
 			continue;
 
_

Patches currently in -mm which might be from chenjie6@huawei.com are

oom-kill-init-lead-panic.patch


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

end of thread, other threads:[~2015-12-04 10:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-02 23:07 + oom-kill-init-lead-panic.patch added to -mm tree akpm
2015-12-04  2:07 ` Ben Hutchings
2015-12-04  2:16   ` Andrew Morton
2015-12-04 10:04     ` Mark Brown
2015-12-04  9:43   ` Michal Hocko
2015-12-02 23:07 akpm
2015-12-02 23:30 akpm

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.