Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752226AbdCPO0J (ORCPT ); Thu, 16 Mar 2017 10:26:09 -0400 Received: from foss.arm.com ([217.140.101.70]:34572 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751182AbdCPO0H (ORCPT ); Thu, 16 Mar 2017 10:26:07 -0400 Message-ID: <58CAA06D.7010900@arm.com> Date: Thu, 16 Mar 2017 14:25:49 +0000 From: James Morse User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Shiju Jose CC: "rjw@rjwysocki.net" , "lenb@kernel.org" , "bp@suse.de" , "mingo@kernel.org" , "prarit@redhat.com" , "tbaicar@codeaurora.org" , "punit.agrawal@arm.com" , "linux-acpi@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "fu.wei@linaro.org" , "Guohanjun (Hanjun Guo)" , Gabriele Paoloni , John Garry , "xuwei (O)" , "Zhengqiang (turing)" Subject: Re: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types References: <86258A5CC0A3704780874CF6004BA8A62DCB6D39@lhreml502-mbx> In-Reply-To: <86258A5CC0A3704780874CF6004BA8A62DCB6D39@lhreml502-mbx> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1442 Lines: 46 On 13/03/17 13:16, Shiju Jose wrote: > System Controller Interrupts are received by ACPI's error device, > which in turn notifies the GHES code. The same is true of > APEI's GSIV and GPIO notification types. > Add support for GSIV and GPIO sharing the SCI > register/unregister/notifier code.Rename the list and notifier > to show this is no longer just SCI, but anything from the > Hardware Error Device. Reviewed-by: James Morse ... what looks like an existing bug: > diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c > index b192b42..fd39929 100644 > --- a/drivers/acpi/apei/ghes.c > +++ b/drivers/acpi/apei/ghes.c > @@ -1068,10 +1072,12 @@ static int ghes_remove(struct platform_device *ghes_dev) > free_irq(ghes->irq, ghes); > break; > case ACPI_HEST_NOTIFY_SCI: > + case ACPI_HEST_NOTIFY_GSIV: > + case ACPI_HEST_NOTIFY_GPIO: > mutex_lock(&ghes_list_mutex); > list_del_rcu(&ghes->list); Suspiciously, there is no synchronize_rcu() between this list_del_rcu() and the kfree(ghes) at the bottom of the function. It looks like 81e88fdc432a lifted it into the NOTIFY_NMI path. I will send a separate fix. > - if (list_empty(&ghes_sci)) > - unregister_acpi_hed_notifier(&ghes_notifier_sci); > + if (list_empty(&ghes_hed)) > + unregister_acpi_hed_notifier(&ghes_notifier_hed); > mutex_unlock(&ghes_list_mutex); > break; > case ACPI_HEST_NOTIFY_NMI: > Thanks, James