Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1602328 > unrolled thread

Re: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types

Started byJames Morse <james.morse@arm.com>
First post2017-03-16 15:30 +0100
Last post2017-03-16 16:30 +0100
Articles 2 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types James Morse <james.morse@arm.com> - 2017-03-16 15:30 +0100
    RE: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types Shiju Jose <shiju.jose@huawei.com> - 2017-03-16 16:30 +0100

#1602328 — Re: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types

FromJames Morse <james.morse@arm.com>
Date2017-03-16 15:30 +0100
SubjectRe: [PATCH 1/1] acpi:apei:handle GSIV and GPIO notification types
Message-ID<tlEzD-80N-15@gated-at.bofh.it>
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@arm.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

[toc] | [next] | [standalone]


#1602526

FromShiju Jose <shiju.jose@huawei.com>
Date2017-03-16 16:30 +0100
Message-ID<tlFvH-gv-17@gated-at.bofh.it>
In reply to#1602328
Hi James,

> -----Original Message-----
> From: linux-acpi-owner@vger.kernel.org [mailto:linux-acpi-
> owner@vger.kernel.org] On Behalf Of James Morse
> Sent: 16 March 2017 14:26
> 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
> 
> 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@arm.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.

Thanks. Got it.

> 
> 
> > -		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

Thanks,
Shiju
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi"
> in the body of a message to majordomo@vger.kernel.org More majordomo
> info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web