summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev/pmi.c
diff options
context:
space:
mode:
authorChristian Krafft <krafft@de.ibm.com>2007-04-23 21:35:43 +0200
committerArnd Bergmann <arnd@klappe.arndb.de>2007-04-23 21:44:40 +0200
commit79baf4a60e8aceb2b8a5bed8575885499cb21ce4 (patch)
treebe23358bee3fc9094485b574cea06201f470ad0b /arch/powerpc/sysdev/pmi.c
parent5050063c0464663a0b0c3dc9fc5bc822aa74a1dd (diff)
[POWERPC] add check for initialized driver data to pmi driver
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>
Diffstat (limited to 'arch/powerpc/sysdev/pmi.c')
-rw-r--r--arch/powerpc/sysdev/pmi.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/powerpc/sysdev/pmi.c b/arch/powerpc/sysdev/pmi.c
index a5282011d39..0b53fed8a9b 100644
--- a/arch/powerpc/sysdev/pmi.c
+++ b/arch/powerpc/sysdev/pmi.c
@@ -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);