• Rafael J. Wysocki's avatar
    driver core: Do not call rpm_put_suppliers() in pm_runtime_drop_link() · a1fdbfbb
    Rafael J. Wysocki authored
    Calling rpm_put_suppliers() from pm_runtime_drop_link() is excessive
    as it affects all suppliers of the consumer device and not just the
    one pointed to by the device link being dropped.  Worst case it may
    cause the consumer device to stop working unexpectedly.  Moreover, in
    principle it is racy with respect to runtime PM of the consumer
    device.
    
    To avoid these problems drop runtime PM references on the particular
    supplier pointed to by the link in question only and do that after
    the link has been dropped from the consumer device's list of links to
    suppliers, which is in device_link_free().
    
    Fixes: a0504aec ("PM / runtime: Drop usage count for suppliers at device link removal")
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    a1fdbfbb
core.c 85.2 KB