rps: avoid one atomic in enqueue_to_backlog
[safe/jmp/linux-2.6] / drivers / base / devres.c
index e1c0730..cf7a0c7 100644 (file)
@@ -9,6 +9,9 @@
 
 #include <linux/device.h>
 #include <linux/module.h>
+#include <linux/slab.h>
+
+#include "base.h"
 
 struct devres_node {
        struct list_head                entry;
@@ -426,6 +429,9 @@ int devres_release_all(struct device *dev)
 {
        unsigned long flags;
 
+       /* Looks like an uninitialized device structure */
+       if (WARN_ON(dev->devres_head.next == NULL))
+               return -ENODEV;
        spin_lock_irqsave(&dev->devres_lock, flags);
        return release_nodes(dev, dev->devres_head.next, &dev->devres_head,
                             flags);