2022-09-02 07:54:41

by Li Zhong

[permalink] [raw]
Subject: [PATCH v1] drivers/acpi/acpi_video: check return value of acpi_get_parent()

Check return status of acpi_get_parent() to confirm whether it fails.

Signed-off-by: Li Zhong <[email protected]>
---
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
/*
* 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;
--
2.25.1


2022-09-10 17:06:51

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH v1] drivers/acpi/acpi_video: check return value of acpi_get_parent()

On Fri, Sep 2, 2022 at 9:42 AM Li Zhong <[email protected]> wrote:
>
> Check return status of acpi_get_parent() to confirm whether it fails.
>
> Signed-off-by: Li Zhong <[email protected]>
> ---
> 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;
> --

2022-09-17 02:01:06

by Li Zhong

[permalink] [raw]
Subject: Re: [PATCH v1] drivers/acpi/acpi_video: check return value of acpi_get_parent()

On Sat, Sep 10, 2022 at 9:17 AM Rafael J. Wysocki <[email protected]> wrote:
>
> On Fri, Sep 2, 2022 at 9:42 AM Li Zhong <[email protected]> wrote:
> >
> > Check return status of acpi_get_parent() to confirm whether it fails.
> >
> > Signed-off-by: Li Zhong <[email protected]>
> > ---
> > 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!