]> err.no Git - linux-2.6/commitdiff
[POWERPC] add check for initialized driver data to pmi driver
authorChristian Krafft <krafft@de.ibm.com>
Mon, 23 Apr 2007 19:35:43 +0000 (21:35 +0200)
committerArnd Bergmann <arnd@klappe.arndb.de>
Mon, 23 Apr 2007 19:44:40 +0000 (21:44 +0200)
This patch adds a check for the private driver data to be initialized.
The bug showed up, as the caller found a pmi device by it's type.
Whereas the pmi driver probes for the type and the name.
Since the name was not as the driver expected, it did not initialize.
A more relaxed probing will be supplied with an extra patch, too.

Signed-off-by: Christian Krafft <krafft@de.ibm.com>
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
arch/powerpc/sysdev/pmi.c

index a5282011d39e6b2f4bb0a31008cc4729cc3ce60c..0b53fed8a9b190902dfd46c61e2ebb5a2ac1ae93 100644 (file)
@@ -279,6 +279,9 @@ void pmi_register_handler(struct of_device *device,
        struct pmi_data *data;
        data = device->dev.driver_data;
 
+       if (!data)
+               return;
+
        spin_lock(&data->handler_spinlock);
        list_add_tail(&handler->node, &data->handler);
        spin_unlock(&data->handler_spinlock);
@@ -289,10 +292,12 @@ void pmi_unregister_handler(struct of_device *device,
                            struct pmi_handler *handler)
 {
        struct pmi_data *data;
+       data = device->dev.driver_data;
 
-       pr_debug("pmi: unregistering handler %p\n", handler);
+       if (!data)
+               return;
 
-       data = device->dev.driver_data;
+       pr_debug("pmi: unregistering handler %p\n", handler);
 
        spin_lock(&data->handler_spinlock);
        list_del(&handler->node);