• Heikki Krogerus's avatar
    PCI: Convert to device_create_managed_software_node() · 0c9e032a
    Heikki Krogerus authored
    In quirk_huawei_pcie_sva(), device_add_properties() is used to
    inject additional device properties, but there is no
    device_remove_properties() call anywhere to remove those
    properties. The assumption is most likely that the device is
    never removed, and the properties therefore do not also never
    need to be removed.
    
    Even though it is unlikely that the device is ever removed in
    this case, it is safer to make sure that the properties are
    also removed if the device ever does get unregistered.
    
    To achieve this, instead of adding a separate quirk for the
    case of device removal where device_remove_properties() is
    called, using device_create_managed_software_node() instead of
    device_add_properties(). Both functions create a software node
    (a type of fwnode) that holds the device properties, which is
    then assigned to the device very much the same way.
    
    The difference between the two functions is, that
    device_create_managed_software_node() guarantees that the
    software node (together with the properties) is removed when
    the device is removed. The function device_add_property() does
    not guarantee that, so the properties added with it should
    always be removed with device_remove_properties().
    Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
    Acked-by: default avatarZhangfei Gao <zhangfei.gao@linaro.org>
    Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    0c9e032a
quirks.c 207 KB