ChangeSet 1.1152.2.7, 2003/08/15 10:12:59-07:00, greg@kroah.com

Driver Core: add warnings if .release functions are not set for objects.

This has been in the -mm tree for a while and has helped a lot in finding
lots of improper users of the driver core.  It also moves the driver core
code up quite a few levels on the "Rusty's guide to kernel APIs".


 drivers/base/class.c |    6 ++++++
 drivers/base/core.c  |    6 ++++++
 2 files changed, 12 insertions(+)


diff -Nru a/drivers/base/class.c b/drivers/base/class.c
--- a/drivers/base/class.c	Fri Aug 15 11:15:48 2003
+++ b/drivers/base/class.c	Fri Aug 15 11:15:48 2003
@@ -194,6 +194,12 @@
 
 	if (cls->release)
 		cls->release(cd);
+	else {
+		printk(KERN_ERR "Device class '%s' does not have a release() function, "
+			"it is broken and must be fixed.\n",
+			cd->class_id);
+		WARN_ON(1);
+	}
 }
 
 static struct kobj_type ktype_class_device = {
diff -Nru a/drivers/base/core.c b/drivers/base/core.c
--- a/drivers/base/core.c	Fri Aug 15 11:15:48 2003
+++ b/drivers/base/core.c	Fri Aug 15 11:15:48 2003
@@ -77,6 +77,12 @@
 	struct device * dev = to_dev(kobj);
 	if (dev->release)
 		dev->release(dev);
+	else {
+		printk(KERN_ERR "Device '%s' does not have a release() function, "
+			"it is broken and must be fixed.\n",
+			dev->bus_id);
+		WARN_ON(1);
+	}
 }
 
 static struct kobj_type ktype_device = {
