--- x/drivers/base/class.c +++ y/drivers/base/class.c @@ -61,6 +61,7 @@ static void class_release(struct kobject pr_debug("class '%s' does not have a release() function, " "be careful\n", class->name); + lockdep_unregister_key(&cp->lock_key); kfree(cp); } @@ -173,6 +174,7 @@ int class_register(struct class *cls) __mutex_init(&cp->mutex, "subsys mutex", key); error = kobject_set_name(&cp->subsys.kobj, "%s", cls->name); if (error) { + lockdep_unregister_key(key); kfree(cp); return error; } @@ -200,6 +202,7 @@ int class_register(struct class *cls) return 0; err_out: + lockdep_unregister_key(key); kfree(cp); cls->p = NULL; return error;