Re: [PATCH] PCI/ACPI: Check the found handle in acpi_get_rc_resources()
From: Rafael J. Wysocki (Intel)
Date: Tue Nov 10 2026 - 06:33:52 EST
On Tue, Nov 10, 2026 at 6:34 AM lirongqing <lirongqing@xxxxxxxxx> wrote:
>
> From: Li RongQing <lirongqing@xxxxxxxxx>
>
> acpi_get_devices() returns AE_OK even when the namespace walk finishes
> without a match, in which case the return_value argument is not written.
> The caller passes an uninitialized acpi_handle and hands it to
> acpi_fetch_acpi_dev(), which dereferences it as an ACPI node.
>
> Initialize the handle and reject a missing match.
>
> Signed-off-by: Li RongQing <lirongqing@xxxxxxxxx>
Stable may want to pick up this one, so please add a Fixes: tag as
suggested by Sashiko:
https://sashiko.dev/#/patchset/20261110053423.2517-1-lirongqing%40baidu.com
> ---
> drivers/pci/pci-acpi.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
> index e260089..e90e749 100644
> --- a/drivers/pci/pci-acpi.c
> +++ b/drivers/pci/pci-acpi.c
> @@ -82,7 +82,7 @@ int acpi_get_rc_resources(struct device *dev, const char *hid, u16 segment,
> {
> struct acpi_device *adev;
> acpi_status status;
> - acpi_handle handle;
> + acpi_handle handle = NULL;
> int ret;
>
> status = acpi_get_devices(hid, acpi_match_rc, &segment, &handle);
> @@ -92,6 +92,9 @@ int acpi_get_rc_resources(struct device *dev, const char *hid, u16 segment,
> return -ENODEV;
> }
>
> + if (!handle)
> + return -ENODEV;
> +
> adev = acpi_fetch_acpi_dev(handle);
> if (!adev)
> return -ENODEV;
> --