lkml.org 
[lkml]   [2013]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/3] ACPI / scan: Start matching drivers after trying scan handlers
    Date
    From: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

    ACPI scan handlers should always be attached to struct acpi_device
    objects before any ACPI drivers, but there is a window during which
    a driver may be attached to a struct acpi_device before checking if
    there is a matching scan handler. Namely, that will happen if an
    ACPI driver module is loaded during acpi_bus_scan() right after
    the first namespace walk is complete and before the given device
    is processed by the second namespace walk.

    To prevent that from happening, set the match_driver flags of
    struct acpi_device objects right before running device_attach()
    for them in acpi_bus_device_attach().

    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    ---
    drivers/acpi/scan.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    Index: linux-pm/drivers/acpi/scan.c
    ===================================================================
    --- linux-pm.orig/drivers/acpi/scan.c
    +++ linux-pm/drivers/acpi/scan.c
    @@ -1676,7 +1676,6 @@ void acpi_init_device_object(struct acpi

    void acpi_device_add_finalize(struct acpi_device *device)
    {
    - device->flags.match_driver = true;
    dev_set_uevent_suppress(&device->dev, false);
    kobject_uevent(&device->dev.kobj, KOBJ_ADD);
    }
    @@ -1915,8 +1914,12 @@ static acpi_status acpi_bus_device_attac
    return AE_OK;

    ret = acpi_scan_attach_handler(device);
    - if (ret)
    - return ret > 0 ? AE_OK : AE_CTRL_DEPTH;
    + if (ret < 0)
    + return AE_CTRL_DEPTH;
    +
    + device->flags.match_driver = true;
    + if (ret > 0)
    + return AE_OK;

    ret = device_attach(&device->dev);
    return ret >= 0 ? AE_OK : AE_CTRL_DEPTH;


    \
     
     \ /
      Last update: 2013-11-04 01:41    [W:3.683 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site