summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-04-01 12:09:26 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-04-01 12:20:54 +0200
commitf326ea63ecc683b3dc88d8ee4f598598d4ed3b39 (patch)
treeed540e1bd38da4ac3cd7952fdcd991070e7858fa /drivers/base
parent980c05616e5d554c46176fe08b5601801f2f8192 (diff)
downloadlinux-next-f326ea63ecc683b3dc88d8ee4f598598d4ed3b39.tar.gz
driver core: class: fix slab-use-after-free Read in class_register()
Syzbot found that we had forgotten to unregister the lock_class_key when using it in commit dcfbb67e48a2 ("driver core: class: use lock_class_key already present in struct subsys_private") so fix that up and correctly release it when done. Cc: "Rafael J. Wysocki" <rafael@kernel.org> Reported-and-tested-by: <syzbot+41d665317c811d4d88aa@syzkaller.appspotmail.com> Fixes: dcfbb67e48a2 ("driver core: class: use lock_class_key already present in struct subsys_private") Link: https://lore.kernel.org/r/2023040126-blandness-duckling-bd55@gregkh Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/class.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/base/class.c b/drivers/base/class.c
index 06b96d6faa19..65502bd7d5c5 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -103,6 +103,7 @@ static void class_release(struct kobject *kobj)
pr_debug("class '%s' does not have a release() function, "
"be careful\n", class->name);
+ lockdep_unregister_key(&cp->lock_key);
kfree(cp);
}