diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-04-01 12:09:26 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2023-04-01 12:20:54 +0200 |
commit | f326ea63ecc683b3dc88d8ee4f598598d4ed3b39 (patch) | |
tree | ed540e1bd38da4ac3cd7952fdcd991070e7858fa /drivers/base/class.c | |
parent | 980c05616e5d554c46176fe08b5601801f2f8192 (diff) | |
download | lwn-f326ea63ecc683b3dc88d8ee4f598598d4ed3b39.tar.gz lwn-f326ea63ecc683b3dc88d8ee4f598598d4ed3b39.zip |
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/class.c')
-rw-r--r-- | drivers/base/class.c | 1 |
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); } |