diff mbox series

[v1] drivers/acpi/acpi_video: check return value of acpi_get_parent()

Message ID 20220902074144.2209674-1-floridsleeves@gmail.com
State New
Headers show
Series [v1] drivers/acpi/acpi_video: check return value of acpi_get_parent() | expand

Commit Message

Li Zhong Sept. 2, 2022, 7:41 a.m. UTC
Check return status of acpi_get_parent() to confirm whether it fails.

Signed-off-by: Li Zhong <floridsleeves@gmail.com>
---
 drivers/acpi/acpi_video.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Rafael J. Wysocki Sept. 10, 2022, 4:17 p.m. UTC | #1
On Fri, Sep 2, 2022 at 9:42 AM Li Zhong <floridsleeves@gmail.com> wrote:
>
> Check return status of acpi_get_parent() to confirm whether it fails.
>
> Signed-off-by: Li Zhong <floridsleeves@gmail.com>
> ---
>  drivers/acpi/acpi_video.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
> index 5cbe2196176d..5fca9a39b1a4 100644
> --- a/drivers/acpi/acpi_video.c
> +++ b/drivers/acpi/acpi_video.c
> @@ -1,4 +1,4 @@
> -// SPDX-License-Identifier: GPL-2.0-or-later
> +       // SPDX-License-Identifier: GPL-2.0-or-later

This change surely is not intended?

>  /*
>   *  video.c - ACPI Video Driver
>   *
> @@ -1753,6 +1753,7 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
>         int result;
>         static int count;
>         char *name;
> +       acpi_status status;
>
>         result = acpi_video_init_brightness(device);
>         if (result)
> @@ -1766,8 +1767,9 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
>                 return;
>         count++;
>
> -       acpi_get_parent(device->dev->handle, &acpi_parent);
> -
> +       status = acpi_get_parent(device->dev->handle, &acpi_parent);
> +       if (ACPI_FAILURE(status))
> +               return;

But device->dev->handle is known to be valid, so the only case in
which acpi_get_parent() above can fail is when the given namespace
object has no parent, in which case acpi_parent will be NULL, so that
should be caught my the check below, shouldn't it?

>         pdev = acpi_get_pci_dev(acpi_parent);
>         if (pdev) {
>                 parent = &pdev->dev;
> --
Li Zhong Sept. 17, 2022, 1:25 a.m. UTC | #2
On Sat, Sep 10, 2022 at 9:17 AM Rafael J. Wysocki <rafael@kernel.org> wrote:
>
> On Fri, Sep 2, 2022 at 9:42 AM Li Zhong <floridsleeves@gmail.com> wrote:
> >
> > Check return status of acpi_get_parent() to confirm whether it fails.
> >
> > Signed-off-by: Li Zhong <floridsleeves@gmail.com>
> > ---
> >  drivers/acpi/acpi_video.c | 8 +++++---
> >  1 file changed, 5 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
> > index 5cbe2196176d..5fca9a39b1a4 100644
> > --- a/drivers/acpi/acpi_video.c
> > +++ b/drivers/acpi/acpi_video.c
> > @@ -1,4 +1,4 @@
> > -// SPDX-License-Identifier: GPL-2.0-or-later
> > +       // SPDX-License-Identifier: GPL-2.0-or-later
>
> This change surely is not intended?
>
> >  /*
> >   *  video.c - ACPI Video Driver
> >   *
> > @@ -1753,6 +1753,7 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
> >         int result;
> >         static int count;
> >         char *name;
> > +       acpi_status status;
> >
> >         result = acpi_video_init_brightness(device);
> >         if (result)
> > @@ -1766,8 +1767,9 @@ static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
> >                 return;
> >         count++;
> >
> > -       acpi_get_parent(device->dev->handle, &acpi_parent);
> > -
> > +       status = acpi_get_parent(device->dev->handle, &acpi_parent);
> > +       if (ACPI_FAILURE(status))
> > +               return;
>
> But device->dev->handle is known to be valid, so the only case in
> which acpi_get_parent() above can fail is when the given namespace
> object has no parent, in which case acpi_parent will be NULL, so that
> should be caught my the check below, shouldn't it?
>
> >         pdev = acpi_get_pci_dev(acpi_parent);
> >         if (pdev) {
> >                 parent = &pdev->dev;
> > --

That makes sense. Thank you!
diff mbox series

Patch

diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c
index 5cbe2196176d..5fca9a39b1a4 100644
--- a/drivers/acpi/acpi_video.c
+++ b/drivers/acpi/acpi_video.c
@@ -1,4 +1,4 @@ 
-// SPDX-License-Identifier: GPL-2.0-or-later
+	// SPDX-License-Identifier: GPL-2.0-or-later
 /*
  *  video.c - ACPI Video Driver
  *
@@ -1753,6 +1753,7 @@  static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
 	int result;
 	static int count;
 	char *name;
+	acpi_status status;
 
 	result = acpi_video_init_brightness(device);
 	if (result)
@@ -1766,8 +1767,9 @@  static void acpi_video_dev_register_backlight(struct acpi_video_device *device)
 		return;
 	count++;
 
-	acpi_get_parent(device->dev->handle, &acpi_parent);
-
+	status = acpi_get_parent(device->dev->handle, &acpi_parent);
+	if (ACPI_FAILURE(status))
+		return;
 	pdev = acpi_get_pci_dev(acpi_parent);
 	if (pdev) {
 		parent = &pdev->dev;