linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
@ 2021-11-01 19:00 Andy Shevchenko
  2021-11-02  5:42 ` Aditya Garg
  2021-11-29 11:59 ` Lee Jones
  0 siblings, 2 replies; 6+ messages in thread
From: Andy Shevchenko @ 2021-11-01 19:00 UTC (permalink / raw)
  To: Andy Shevchenko, Lee Jones, linux-kernel; +Cc: Orlando Chamberlain, Aditya Garg

The runtime PM callback may be called as soon as the runtime PM facility
is enabled and activated. It means that ->suspend() may be called before
we finish probing the device in the ACPI case. Hence, NULL pointer
dereference:

  intel-lpss INT34BA:00: IRQ index 0 not found
  BUG: kernel NULL pointer dereference, address: 0000000000000030
  ...
  Workqueue: pm pm_runtime_work
  RIP: 0010:intel_lpss_suspend+0xb/0x40 [intel_lpss]

To fix this, first try to register the device and only after that enable
runtime PM facility.

Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
Reported-by: Orlando Chamberlain <redecorating@protonmail.com>
Reported-by: Aditya Garg <gargaditya08@live.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Tested-by: Aditya Garg <gargaditya08@live.com>
---
v2: added tag (Aditya), returned 0 explicitly at the end of ->probe()
 drivers/mfd/intel-lpss-acpi.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/mfd/intel-lpss-acpi.c b/drivers/mfd/intel-lpss-acpi.c
index 3f1d976eb67c..f2ea6540a01e 100644
--- a/drivers/mfd/intel-lpss-acpi.c
+++ b/drivers/mfd/intel-lpss-acpi.c
@@ -136,6 +136,7 @@ static int intel_lpss_acpi_probe(struct platform_device *pdev)
 {
 	struct intel_lpss_platform_info *info;
 	const struct acpi_device_id *id;
+	int ret;
 
 	id = acpi_match_device(intel_lpss_acpi_ids, &pdev->dev);
 	if (!id)
@@ -149,10 +150,14 @@ static int intel_lpss_acpi_probe(struct platform_device *pdev)
 	info->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	info->irq = platform_get_irq(pdev, 0);
 
+	ret = intel_lpss_probe(&pdev->dev, info);
+	if (ret)
+		return ret;
+
 	pm_runtime_set_active(&pdev->dev);
 	pm_runtime_enable(&pdev->dev);
 
-	return intel_lpss_probe(&pdev->dev, info);
+	return 0;
 }
 
 static int intel_lpss_acpi_remove(struct platform_device *pdev)
-- 
2.33.0


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

* Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
  2021-11-01 19:00 [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() Andy Shevchenko
@ 2021-11-02  5:42 ` Aditya Garg
  2021-11-15 10:36   ` Andy Shevchenko
  2021-11-29 11:59 ` Lee Jones
  1 sibling, 1 reply; 6+ messages in thread
From: Aditya Garg @ 2021-11-02  5:42 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: Lee Jones, linux-kernel, Orlando Chamberlain



> On 02-Nov-2021, at 12:30 AM, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> The runtime PM callback may be called as soon as the runtime PM facility
> is enabled and activated. It means that ->suspend() may be called before
> we finish probing the device in the ACPI case. Hence, NULL pointer
> dereference:
> 
>  intel-lpss INT34BA:00: IRQ index 0 not found
>  BUG: kernel NULL pointer dereference, address: 0000000000000030
>  ...
>  Workqueue: pm pm_runtime_work
>  RIP: 0010:intel_lpss_suspend+0xb/0x40 [intel_lpss]
> 
> To fix this, first try to register the device and only after that enable
> runtime PM facility.
> 
> Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
> Reported-by: Orlando Chamberlain <redecorating@protonmail.com>
> Reported-by: Aditya Garg <gargaditya08@live.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Tested-by: Aditya Garg <gargaditya08@live.com>
> ---
> v2: added tag (Aditya), returned 0 explicitly at the end of ->probe()
It works
> drivers/mfd/intel-lpss-acpi.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/mfd/intel-lpss-acpi.c b/drivers/mfd/intel-lpss-acpi.c
> index 3f1d976eb67c..f2ea6540a01e 100644
> --- a/drivers/mfd/intel-lpss-acpi.c
> +++ b/drivers/mfd/intel-lpss-acpi.c
> @@ -136,6 +136,7 @@ static int intel_lpss_acpi_probe(struct platform_device *pdev)
> {
> 	struct intel_lpss_platform_info *info;
> 	const struct acpi_device_id *id;
> +	int ret;
> 
> 	id = acpi_match_device(intel_lpss_acpi_ids, &pdev->dev);
> 	if (!id)
> @@ -149,10 +150,14 @@ static int intel_lpss_acpi_probe(struct platform_device *pdev)
> 	info->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> 	info->irq = platform_get_irq(pdev, 0);
> 
> +	ret = intel_lpss_probe(&pdev->dev, info);
> +	if (ret)
> +		return ret;
> +
> 	pm_runtime_set_active(&pdev->dev);
> 	pm_runtime_enable(&pdev->dev);
> 
> -	return intel_lpss_probe(&pdev->dev, info);
> +	return 0;
> }
> 
> static int intel_lpss_acpi_remove(struct platform_device *pdev)
> -- 
> 2.33.0
> 


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

* Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
  2021-11-02  5:42 ` Aditya Garg
@ 2021-11-15 10:36   ` Andy Shevchenko
       [not found]     ` <PN2PR01MB44118FFB624CD71D6C3F0FF5B8989@PN2PR01MB4411.INDPRD01.PROD.OUTLOOK.COM>
  0 siblings, 1 reply; 6+ messages in thread
From: Andy Shevchenko @ 2021-11-15 10:36 UTC (permalink / raw)
  To: Aditya Garg; +Cc: Lee Jones, linux-kernel, Orlando Chamberlain

On Tue, Nov 02, 2021 at 05:42:35AM +0000, Aditya Garg wrote:
> > On 02-Nov-2021, at 12:30 AM, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> > The runtime PM callback may be called as soon as the runtime PM facility
> > is enabled and activated. It means that ->suspend() may be called before
> > we finish probing the device in the ACPI case. Hence, NULL pointer
> > dereference:
> > 
> >  intel-lpss INT34BA:00: IRQ index 0 not found
> >  BUG: kernel NULL pointer dereference, address: 0000000000000030
> >  ...
> >  Workqueue: pm pm_runtime_work
> >  RIP: 0010:intel_lpss_suspend+0xb/0x40 [intel_lpss]
> > 
> > To fix this, first try to register the device and only after that enable
> > runtime PM facility.
> > 
> > Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
> > Reported-by: Orlando Chamberlain <redecorating@protonmail.com>
> > Reported-by: Aditya Garg <gargaditya08@live.com>
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > Tested-by: Aditya Garg <gargaditya08@live.com>
> > ---
> > v2: added tag (Aditya), returned 0 explicitly at the end of ->probe()

> It works

Thanks for testing again!

Lee, can we have this as a fix material for v5.16-rcX?

-- 
With Best Regards,
Andy Shevchenko



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

* Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
       [not found]     ` <PN2PR01MB44118FFB624CD71D6C3F0FF5B8989@PN2PR01MB4411.INDPRD01.PROD.OUTLOOK.COM>
@ 2021-11-16 15:53       ` Lee Jones
       [not found]         ` <258423E3-A0D4-4E24-BCD1-42F7ED25BB88@live.com>
  0 siblings, 1 reply; 6+ messages in thread
From: Lee Jones @ 2021-11-16 15:53 UTC (permalink / raw)
  To: Aditya Garg; +Cc: Andy Shevchenko, linux-kernel, Orlando Chamberlain

On Mon, 15 Nov 2021, Aditya Garg wrote:

> 
> ________________________________
> From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Sent: Monday, November 15, 2021 4:06 PM
> To: Aditya Garg
> Cc: Lee Jones; linux-kernel@vger.kernel.org; Orlando Chamberlain
> Subject: Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
> 
> On Tue, Nov 02, 2021 at 05:42:35AM +0000, Aditya Garg wrote:
> > > On 02-Nov-2021, at 12:30 AM, Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> > > The runtime PM callback may be called as soon as the runtime PM facility
> > > is enabled and activated. It means that ->suspend() may be called before
> > > we finish probing the device in the ACPI case. Hence, NULL pointer
> > > dereference:
> > >
> > >  intel-lpss INT34BA:00: IRQ index 0 not found
> > >  BUG: kernel NULL pointer dereference, address: 0000000000000030
> > >  ...
> > >  Workqueue: pm pm_runtime_work
> > >  RIP: 0010:intel_lpss_suspend+0xb/0x40 [intel_lpss]
> > >
> > > To fix this, first try to register the device and only after that enable
> > > runtime PM facility.
> > >
> > > Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
> > > Reported-by: Orlando Chamberlain <redecorating@protonmail.com>
> > > Reported-by: Aditya Garg <gargaditya08@live.com>
> > > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > > Tested-by: Aditya Garg <gargaditya08@live.com>
> > > ---
> > > v2: added tag (Aditya), returned 0 explicitly at the end of ->probe()
> 
> > It works
> 
> Thanks for testing again!
> 
> Lee, can we have this as a fix material for v5.16-rcX?

Generally not, no.

We usually only push patches for the -rcs if they fix something that
was broken during the merge window.  Not 6+ years ago. :)

However, if other valid fixes appear, I'll shove it into the PR too.

> I would like to have it backported to stable 5.15 too.

Yes, once it's merged into mainline, it will be back-ported as far
back as it applies cleanly.

If you have a specific kernel in mind, you should indicate it on the
end of the Fixes line.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
       [not found]         ` <258423E3-A0D4-4E24-BCD1-42F7ED25BB88@live.com>
@ 2021-11-18  8:40           ` Lee Jones
  0 siblings, 0 replies; 6+ messages in thread
From: Lee Jones @ 2021-11-18  8:40 UTC (permalink / raw)
  To: Aditya Garg; +Cc: Andy Shevchenko, linux-kernel, Orlando Chamberlain

On Wed, 17 Nov 2021, Aditya Garg wrote:

> 
> 
> On 16-Nov-2021, at 9:23 PM, Lee Jones <lee.jones@linaro.org<mailto:lee.jones@linaro.org>> wrote:
> 
> On Mon, 15 Nov 2021, Aditya Garg wrote:
> 
> 
> ________________________________
> From: Andy Shevchenko <andriy.shevchenko@linux.intel.com<mailto:andriy.shevchenko@linux.intel.com>>
> Sent: Monday, November 15, 2021 4:06 PM
> To: Aditya Garg
> Cc: Lee Jones; linux-kernel@vger.kernel.org<mailto:linux-kernel@vger.kernel.org>; Orlando Chamberlain
> Subject: Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
> 
> On Tue, Nov 02, 2021 at 05:42:35AM +0000, Aditya Garg wrote:
> On 02-Nov-2021, at 12:30 AM, Andy Shevchenko <andriy.shevchenko@linux.intel.com<mailto:andriy.shevchenko@linux.intel.com>> wrote:
> 
> The runtime PM callback may be called as soon as the runtime PM facility
> is enabled and activated. It means that ->suspend() may be called before
> we finish probing the device in the ACPI case. Hence, NULL pointer
> dereference:
> 
> intel-lpss INT34BA:00: IRQ index 0 not found
> BUG: kernel NULL pointer dereference, address: 0000000000000030
> ...
> Workqueue: pm pm_runtime_work
> RIP: 0010:intel_lpss_suspend+0xb/0x40 [intel_lpss]
> 
> To fix this, first try to register the device and only after that enable
> runtime PM facility.
> 
> Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
> Reported-by: Orlando Chamberlain <redecorating@protonmail.com<mailto:redecorating@protonmail.com>>
> Reported-by: Aditya Garg <gargaditya08@live.com<mailto:gargaditya08@live.com>>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com<mailto:andriy.shevchenko@linux.intel.com>>
> Tested-by: Aditya Garg <gargaditya08@live.com<mailto:gargaditya08@live.com>>
> ---
> v2: added tag (Aditya), returned 0 explicitly at the end of ->probe()
> 
> It works
> 
> Thanks for testing again!
> 
> Lee, can we have this as a fix material for v5.16-rcX?
> 
> Generally not, no.
> 
> We usually only push patches for the -rcs if they fix something that
> was broken during the merge window.  Not 6+ years ago. :)
> 
> However, if other valid fixes appear, I'll shove it into the PR too.
> 
> I would like to have it backported to stable 5.15 too.
> 
> Yes, once it's merged into mainline, it will be back-ported as far
> back as it applies cleanly.
> 
> If you have a specific kernel in mind, you should indicate it on the
> end of the Fixes line.
> No specific kernel in mind. The issue was observed since 5.15.

That was really hard to read!

Please fix your mailer to set previous replies as quotes.

Not only did you not quote the mail you were replying to, you also
stripped out *all* previous quotes too.  I didn't even know you could
do that!

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

* Re: [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe()
  2021-11-01 19:00 [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() Andy Shevchenko
  2021-11-02  5:42 ` Aditya Garg
@ 2021-11-29 11:59 ` Lee Jones
  1 sibling, 0 replies; 6+ messages in thread
From: Lee Jones @ 2021-11-29 11:59 UTC (permalink / raw)
  To: Andy Shevchenko; +Cc: linux-kernel, Orlando Chamberlain, Aditya Garg

On Mon, 01 Nov 2021, Andy Shevchenko wrote:

> The runtime PM callback may be called as soon as the runtime PM facility
> is enabled and activated. It means that ->suspend() may be called before
> we finish probing the device in the ACPI case. Hence, NULL pointer
> dereference:
> 
>   intel-lpss INT34BA:00: IRQ index 0 not found
>   BUG: kernel NULL pointer dereference, address: 0000000000000030
>   ...
>   Workqueue: pm pm_runtime_work
>   RIP: 0010:intel_lpss_suspend+0xb/0x40 [intel_lpss]
> 
> To fix this, first try to register the device and only after that enable
> runtime PM facility.
> 
> Fixes: 4b45efe85263 ("mfd: Add support for Intel Sunrisepoint LPSS devices")
> Reported-by: Orlando Chamberlain <redecorating@protonmail.com>
> Reported-by: Aditya Garg <gargaditya08@live.com>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Tested-by: Aditya Garg <gargaditya08@live.com>
> ---
> v2: added tag (Aditya), returned 0 explicitly at the end of ->probe()
>  drivers/mfd/intel-lpss-acpi.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)

Applied, thanks.

-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog

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

end of thread, other threads:[~2021-11-29 13:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-01 19:00 [PATCH v2 1/1] mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() Andy Shevchenko
2021-11-02  5:42 ` Aditya Garg
2021-11-15 10:36   ` Andy Shevchenko
     [not found]     ` <PN2PR01MB44118FFB624CD71D6C3F0FF5B8989@PN2PR01MB4411.INDPRD01.PROD.OUTLOOK.COM>
2021-11-16 15:53       ` Lee Jones
     [not found]         ` <258423E3-A0D4-4E24-BCD1-42F7ED25BB88@live.com>
2021-11-18  8:40           ` Lee Jones
2021-11-29 11:59 ` Lee Jones

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).