lkml.org 
[lkml]   [2021]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 06/86] ACPI: scan: Make acpi_bus_get_device() clear return pointer on error
    Date
    From: Hans de Goede <hdegoede@redhat.com>

    commit 78a18fec5258c8df9435399a1ea022d73d3eceb9 upstream.

    Set the acpi_device pointer which acpi_bus_get_device() returns-by-
    reference to NULL on errors.

    We've recently had 2 cases where callers of acpi_bus_get_device()
    did not properly error check the return value, so set the returned-
    by-reference acpi_device pointer to NULL, because at least some
    callers of acpi_bus_get_device() expect that to be done on errors.

    [ rjw: This issue was exposed by commit 71da201f38df ("ACPI: scan:
    Defer enumeration of devices with _DEP lists") which caused it to
    be much more likely to occur on some systems, but the real defect
    had been introduced by an earlier commit. ]

    Fixes: 40e7fcb19293 ("ACPI: Add _DEP support to fix battery issue on Asus T100TA")
    Fixes: bcfcd409d4db ("usb: split code locating ACPI companion into port and device")
    Reported-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Diagnosed-by: Rafael J. Wysocki <rafael@kernel.org>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Cc: All applicable <stable@vger.kernel.org>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/acpi/scan.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/drivers/acpi/scan.c
    +++ b/drivers/acpi/scan.c
    @@ -587,6 +587,8 @@ static int acpi_get_device_data(acpi_han
    if (!device)
    return -EINVAL;

    + *device = NULL;
    +
    status = acpi_get_data_full(handle, acpi_scan_drop_device,
    (void **)device, callback);
    if (ACPI_FAILURE(status) || !*device) {

    \
     
     \ /
      Last update: 2021-01-26 09:43    [W:3.528 / U:0.588 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site