mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 05:02:12 +00:00
KEYS: Give key types their own lockdep class for key->sem
Give keys their own lockdep class to differentiate them from each other in case a key of one type has to refer to a key of another type. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Mimi Zohar <zohar@us.ibm.com> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
parent
24942c8e5c
commit
7845bc3964
@ -92,6 +92,7 @@ struct key_type {
|
||||
|
||||
/* internal fields */
|
||||
struct list_head link; /* link in types list */
|
||||
struct lock_class_key lock_class; /* key->sem lock class */
|
||||
};
|
||||
|
||||
extern struct key_type key_type_keyring;
|
||||
|
@ -291,6 +291,7 @@ struct key *key_alloc(struct key_type *type, const char *desc,
|
||||
|
||||
atomic_set(&key->usage, 1);
|
||||
init_rwsem(&key->sem);
|
||||
lockdep_set_class(&key->sem, &type->lock_class);
|
||||
key->type = type;
|
||||
key->user = user;
|
||||
key->quotalen = quotalen;
|
||||
@ -946,6 +947,8 @@ int register_key_type(struct key_type *ktype)
|
||||
struct key_type *p;
|
||||
int ret;
|
||||
|
||||
memset(&ktype->lock_class, 0, sizeof(ktype->lock_class));
|
||||
|
||||
ret = -EEXIST;
|
||||
down_write(&key_types_sem);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user