spmi: do not use bus internal data
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Mon, 7 Mar 2016 11:35:50 +0000 (17:05 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 30 Apr 2016 21:15:56 +0000 (14:15 -0700)
The variable p is a data structure which is used by the driver core
internally and it is not expected that busses will be directly accessing
these driver core internal only data.

Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/spmi/spmi.c

index 6b3da1b..2b9b094 100644 (file)
@@ -25,6 +25,7 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/spmi.h>
 
+static bool is_registered;
 static DEFINE_IDA(ctrl_ida);
 
 static void spmi_dev_release(struct device *dev)
@@ -507,7 +508,7 @@ int spmi_controller_add(struct spmi_controller *ctrl)
        int ret;
 
        /* Can't register until after driver model init */
-       if (WARN_ON(!spmi_bus_type.p))
+       if (WARN_ON(!is_registered))
                return -EAGAIN;
 
        ret = device_add(&ctrl->dev);
@@ -576,7 +577,14 @@ module_exit(spmi_exit);
 
 static int __init spmi_init(void)
 {
-       return bus_register(&spmi_bus_type);
+       int ret;
+
+       ret = bus_register(&spmi_bus_type);
+       if (ret)
+               return ret;
+
+       is_registered = true;
+       return 0;
 }
 postcore_initcall(spmi_init);