Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753594AbbBJIcV (ORCPT ); Tue, 10 Feb 2015 03:32:21 -0500 Received: from mail7.hitachi.co.jp ([133.145.228.42]:49273 "EHLO mail7.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752795AbbBJIcU (ORCPT ); Tue, 10 Feb 2015 03:32:20 -0500 X-AuditID: 85900ec0-c10f7b9000002d32-01-54d9c1dfd769 Message-ID: <54D9C211.8010000@hitachi.com> Date: Tue, 10 Feb 2015 17:32:17 +0900 From: Hidehiro Kawai User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20120604 Thunderbird/13.0 MIME-Version: 1.0 To: HATAYAMA Daisuke Cc: Baoquan He , ebiederm@xmission.com, vgoyal@redhat.com, masami.hiramatsu.pt@hitachi.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] kernel/panic/kexec: fix "crash_kexec_post_notifiers" option issue in oops path References: <20150205.175943.381586636.d.hatayama@jp.fujitsu.com> <20150209024030.GA1847@dhcp-16-105.nay.redhat.com> <20150209.122204.284539162.d.hatayama@jp.fujitsu.com> <20150209032914.GB1847@dhcp-16-105.nay.redhat.com> In-Reply-To: <20150209032914.GB1847@dhcp-16-105.nay.redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: AAAAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1951 Lines: 65 Hello, (2015/02/09 12:29), Baoquan He wrote:> On 02/09/15 at 12:22pm, HATAYAMA Daisuke wrote: >> From: Baoquan He >>> On 02/05/15 at 05:59pm, HATAYAMA Daisuke wrote: >>>> diff --git a/kernel/kexec.c b/kernel/kexec.c >>>> index 9a8a01a..0ecf252 100644 >>>> --- a/kernel/kexec.c >>>> +++ b/kernel/kexec.c >>>> @@ -84,6 +84,8 @@ struct resource crashk_low_res = { >>>> >>>> int kexec_should_crash(struct task_struct *p) >>>> { >>>> + if (crash_kexec_post_notifiers) >>>> + return 0; >>>> if (in_interrupt() || !p->pid || is_global_init(p) || panic_on_oops) >>>> return 1; >>> >>> What if these two conditions !p->pid || is_global_init(p) are satisfied? >>> Seems the behavious is changed. >>> >> >> Please further follow do_exit() path. For each condition, there are >> the corresponding panic() calls. In summary: >> >> oops_end >> 1) panic() for in_interrupt() >> 2) panic() for panic_on_oops >> do_exit >> 3) panic() for !p->pid (idle task) >> exit_notify >> forget_original_parent >> find_child_reaper >> 4) panic() for p->pid == 1 (init task) > > Yes, all conditions have been covered. > > So this patch is necessary, ACK it. Thanks > > Acked-by: Baoquan He Thanks for the patch! I tested it in following cases on x86_64 and it worked well; my panic notifier was called, then 2nd kernel booted. - Null pointer dereference in each context of - hard IRQ - pid == 0 - pid == 1 - others with panic_on_oops=1 - Zero-divide in the context of normal process (panic_on_oops=1) Tested-by: Hidehiro Kawai -- Hidehiro Kawai Hitachi, Yokohama Research Laboratory -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/