PCI: Convert to device_create_managed_software_node()
authorHeikki Krogerus <heikki.krogerus@linux.intel.com>
Mon, 15 Nov 2021 12:09:59 +0000 (15:09 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 24 Nov 2021 14:28:01 +0000 (15:28 +0100)
commit0c9e032a45e777b707bd8ae282242a2b9be3ac91
tree7b14a0a0d71b4cce8e2ee456f11f47f20a7a3cda
parent136057256686de39cc3a07c2e39ef6bc43003ff6
PCI: Convert to device_create_managed_software_node()

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: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/pci/quirks.c