powerpc/pseries: move to use bus_get_dev_root()
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Mar 2023 18:28:56 +0000 (19:28 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 Mar 2023 14:29:38 +0000 (15:29 +0100)
Direct access to the struct bus_type dev_root pointer is going away soon
so replace that with a call to bus_get_dev_root() instead, which is what
it is there for.

Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linuxppc-dev@lists.ozlabs.org
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Link: https://lore.kernel.org/r/20230313182918.1312597-14-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/powerpc/platforms/pseries/pseries_energy.c
arch/powerpc/platforms/pseries/suspend.c

index 09e98d3..2c661b7 100644 (file)
@@ -300,20 +300,22 @@ static struct device_attribute attr_percpu_deactivate_hint =
 static int __init pseries_energy_init(void)
 {
        int cpu, err;
-       struct device *cpu_dev;
+       struct device *cpu_dev, *dev_root;
 
        if (!firmware_has_feature(FW_FEATURE_BEST_ENERGY))
                return 0; /* H_BEST_ENERGY hcall not supported */
 
        /* Create the sysfs files */
-       err = device_create_file(cpu_subsys.dev_root,
-                               &attr_cpu_activate_hint_list);
-       if (!err)
-               err = device_create_file(cpu_subsys.dev_root,
-                               &attr_cpu_deactivate_hint_list);
+       dev_root = bus_get_dev_root(&cpu_subsys);
+       if (dev_root) {
+               err = device_create_file(dev_root, &attr_cpu_activate_hint_list);
+               if (!err)
+                       err = device_create_file(dev_root, &attr_cpu_deactivate_hint_list);
+               put_device(dev_root);
+               if (err)
+                       return err;
+       }
 
-       if (err)
-               return err;
        for_each_possible_cpu(cpu) {
                cpu_dev = get_cpu_device(cpu);
                err = device_create_file(cpu_dev,
@@ -337,14 +339,18 @@ static int __init pseries_energy_init(void)
 static void __exit pseries_energy_cleanup(void)
 {
        int cpu;
-       struct device *cpu_dev;
+       struct device *cpu_dev, *dev_root;
 
        if (!sysfs_entries)
                return;
 
        /* Remove the sysfs files */
-       device_remove_file(cpu_subsys.dev_root, &attr_cpu_activate_hint_list);
-       device_remove_file(cpu_subsys.dev_root, &attr_cpu_deactivate_hint_list);
+       dev_root = bus_get_dev_root(&cpu_subsys);
+       if (dev_root) {
+               device_remove_file(dev_root, &attr_cpu_activate_hint_list);
+               device_remove_file(dev_root, &attr_cpu_deactivate_hint_list);
+               put_device(dev_root);
+       }
 
        for_each_possible_cpu(cpu) {
                cpu_dev = get_cpu_device(cpu);
index 1b902cb..5c43435 100644 (file)
@@ -143,6 +143,7 @@ static const struct platform_suspend_ops pseries_suspend_ops = {
  **/
 static int pseries_suspend_sysfs_register(struct device *dev)
 {
+       struct device *dev_root;
        int rc;
 
        if ((rc = subsys_system_register(&suspend_subsys, NULL)))
@@ -151,8 +152,13 @@ static int pseries_suspend_sysfs_register(struct device *dev)
        dev->id = 0;
        dev->bus = &suspend_subsys;
 
-       if ((rc = device_create_file(suspend_subsys.dev_root, &dev_attr_hibernate)))
-               goto subsys_unregister;
+       dev_root = bus_get_dev_root(&suspend_subsys);
+       if (dev_root) {
+               rc = device_create_file(dev_root, &dev_attr_hibernate);
+               put_device(dev_root);
+               if (rc)
+                       goto subsys_unregister;
+       }
 
        return 0;