[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <58CAA06D.7010900@arm.com>
Date: Thu, 16 Mar 2017 14:25:49 +0000
From: James Morse <james.morse@....com>
To: Shiju Jose <shiju.jose@...wei.com>
CC: "rjw@...ysocki.net" <rjw@...ysocki.net>,
"lenb@...nel.org" <lenb@...nel.org>, "bp@...e.de" <bp@...e.de>,
"mingo@...nel.org" <mingo@...nel.org>,
"prarit@...hat.com" <prarit@...hat.com>,
"tbaicar@...eaurora.org" <tbaicar@...eaurora.org>,
"punit.agrawal@....com" <punit.agrawal@....com>,
"linux-acpi@...r.kernel.org" <linux-acpi@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"fu.wei@...aro.org" <fu.wei@...aro.org>,
"Guohanjun (Hanjun Guo)" <guohanjun@...wei.com>,
Gabriele Paoloni <gabriele.paoloni@...wei.com>,
John Garry <john.garry@...wei.com>,
"xuwei (O)" <xuwei5@...ilicon.com>,
"Zhengqiang (turing)" <zhengqiang10@...wei.com>
Subject: Re: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types
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 <james.morse@....com>
... 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
Powered by blists - more mailing lists