summaryrefslogtreecommitdiff
path: root/drivers/base/core.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-05-29 19:49:52 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-05-29 19:49:52 +0400
commitdeeb103412efcf9313e2d1dfe892fed4e372b9e7 (patch)
tree02beda159182e2fc8be3bdb2f73cca79e24fe168 /drivers/base/core.c
parentc8bce3d3bdedc7d187fa222a3b36d149bd940d0e (diff)
parent5c8563d773c0e9f0ac2a552e84806decd98ce732 (diff)
downloadlinux-deeb103412efcf9313e2d1dfe892fed4e372b9e7.tar.xz
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: Driver Core: do not oops when driver_unregister() is called for unregistered drivers sysfs: file.c: use create_singlethread_workqueue()
Diffstat (limited to 'drivers/base/core.c')
-rw-r--r--drivers/base/core.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/base/core.c b/drivers/base/core.c
index 4aa527b8a913..1977d4beb89e 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -879,7 +879,7 @@ int device_add(struct device *dev)
}
if (!dev_name(dev))
- goto done;
+ goto name_error;
pr_debug("device: '%s': %s\n", dev_name(dev), __func__);
@@ -978,6 +978,9 @@ done:
cleanup_device_parent(dev);
if (parent)
put_device(parent);
+name_error:
+ kfree(dev->p);
+ dev->p = NULL;
goto done;
}