]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/base/core.c
firmware: fix checking for return values for fw_add_devm_name()
[mirror_ubuntu-bionic-kernel.git] / drivers / base / core.c
index 4b8ba2a75a4d1d026903616f508df41db10d3869..6835736daf2d81dc3907b8babcf6564807df00e9 100644 (file)
@@ -313,6 +313,9 @@ static void __device_link_del(struct device_link *link)
        dev_info(link->consumer, "Dropping the link to %s\n",
                 dev_name(link->supplier));
 
+       if (link->flags & DL_FLAG_PM_RUNTIME)
+               pm_runtime_drop_link(link->consumer);
+
        list_del(&link->s_node);
        list_del(&link->c_node);
        device_link_free(link);
@@ -1571,7 +1574,7 @@ static int device_add_class_symlinks(struct device *dev)
        int error;
 
        if (of_node) {
-               error = sysfs_create_link(&dev->kobj, &of_node->kobj,"of_node");
+               error = sysfs_create_link(&dev->kobj, of_node_kobj(of_node), "of_node");
                if (error)
                        dev_warn(dev, "Error %d creating of_node link\n",error);
                /* An error here doesn't warrant bringing down the device */
@@ -1958,7 +1961,6 @@ void device_del(struct device *dev)
                blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
                                             BUS_NOTIFY_DEL_DEVICE, dev);
 
-       device_links_purge(dev);
        dpm_sysfs_remove(dev);
        if (parent)
                klist_del(&dev->p->knode_parent);
@@ -1986,6 +1988,7 @@ void device_del(struct device *dev)
        device_pm_remove(dev);
        driver_deferred_probe_del(dev);
        device_remove_properties(dev);
+       device_links_purge(dev);
 
        /* Notify the platform of the removal, in case they
         * need to do anything...