aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/sys.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/sys.c')
-rw-r--r--drivers/base/sys.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/base/sys.c b/drivers/base/sys.c
index 8e13fd942163..4fbb56bcb1ee 100644
--- a/drivers/base/sys.c
+++ b/drivers/base/sys.c
@@ -167,6 +167,22 @@ int sysdev_driver_register(struct sysdev_class *cls, struct sysdev_driver *drv)
167{ 167{
168 int err = 0; 168 int err = 0;
169 169
170 if (!cls) {
171 printk(KERN_WARNING "sysdev: invalid class passed to "
172 "sysdev_driver_register!\n");
173 WARN_ON(1);
174 return -EINVAL;
175 }
176
177 /* Check whether this driver has already been added to a class. */
178 if ((drv->entry.next != drv->entry.prev) ||
179 (drv->entry.next != NULL)) {
180 printk(KERN_WARNING "sysdev: class %s: driver (%p) has already"
181 " been registered to a class, something is wrong, but "
182 "will forge on!\n", cls->name, drv);
183 WARN_ON(1);
184 }
185
170 mutex_lock(&sysdev_drivers_lock); 186 mutex_lock(&sysdev_drivers_lock);
171 if (cls && kset_get(&cls->kset)) { 187 if (cls && kset_get(&cls->kset)) {
172 list_add_tail(&drv->entry, &cls->drivers); 188 list_add_tail(&drv->entry, &cls->drivers);
@@ -179,7 +195,7 @@ int sysdev_driver_register(struct sysdev_class *cls, struct sysdev_driver *drv)
179 } 195 }
180 } else { 196 } else {
181 err = -EINVAL; 197 err = -EINVAL;
182 printk(KERN_ERR "%s: invalid device class\n", __FUNCTION__); 198 printk(KERN_ERR "%s: invalid device class\n", __func__);
183 WARN_ON(1); 199 WARN_ON(1);
184 } 200 }
185 mutex_unlock(&sysdev_drivers_lock); 201 mutex_unlock(&sysdev_drivers_lock);