summaryrefslogtreecommitdiff
path: root/drivers/base/bus.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-02-01 11:33:49 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-02-01 22:03:18 +0300
commit37e98d9bedb50644654fd196e38acad49903fadc (patch)
treeba0d7e0436daa67195830d5cd5c095e0c3d65bd3 /drivers/base/bus.c
parent40b3880dc29b89c39139eba11eba2b3107dc2e38 (diff)
downloadlinux-37e98d9bedb50644654fd196e38acad49903fadc.tar.xz
driver core: bus: move lock_class_key into dynamic structure
Move the lock_class_key structure out of struct bus_type and into the dynamic structure we create already for all bus_types registered with the kernel. This saves on static space and removes one more writable field in struct bus_type. In the future, the same field can be moved out of the struct class logic because it shares this same private structure. Most everyone will never notice this change, as lockdep is not enabled in real systems so no memory or logic changes are happening for them. Cc: "Rafael J. Wysocki" <rafael@kernel.org> Acked-by: Rafael J. Wysocki <rafael@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Link: https://lore.kernel.org/r/20230201083349.4038660-1-gregkh@linuxfoundation.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r--drivers/base/bus.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index cf1b8f00b4c0..aa70b3a7d778 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -154,6 +154,7 @@ static void bus_release(struct kobject *kobj)
struct subsys_private *priv = to_subsys_private(kobj);
struct bus_type *bus = priv->bus;
+ lockdep_unregister_key(&priv->lock_key);
kfree(priv);
bus->p = NULL;
}
@@ -743,7 +744,7 @@ int bus_register(struct bus_type *bus)
{
int retval;
struct subsys_private *priv;
- struct lock_class_key *key = &bus->lock_key;
+ struct lock_class_key *key;
priv = kzalloc(sizeof(struct subsys_private), GFP_KERNEL);
if (!priv)
@@ -785,6 +786,8 @@ int bus_register(struct bus_type *bus)
}
INIT_LIST_HEAD(&priv->interfaces);
+ key = &priv->lock_key;
+ lockdep_register_key(key);
__mutex_init(&priv->mutex, "subsys mutex", key);
klist_init(&priv->klist_devices, klist_devices_get, klist_devices_put);
klist_init(&priv->klist_drivers, NULL, NULL);