Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

fs/crypto/keyring.c do_remove_key() -> clear_mk_users()

Type Parameter Key Value
PARAM_VALUE 0 mk 4096-ptr_max
PARAM_VALUE 0 mk->mk_sem.dep_map->name 0-255
PARAM_VALUE 0 mk->mk_sem.first_waiter->list.next 2624917664208203776
PARAM_VALUE 0 mk->mk_sem.first_waiter->list.prev 2624917664208203776
PARAM_VALUE 0 mk->mk_sem.first_waiter->type 0-1
PARAM_VALUE 0 mk->mk_sem.osq.tail.counter 0-s32max
PARAM_VALUE 0 mk->mk_sem.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 mk->mk_sem.wait_lock.owner (-1)
PARAM_VALUE 0 mk->mk_sem.wait_lock.owner_cpu u32max
PARAM_VALUE 0 mk->mk_spec.type 1-2
PARAM_VALUE 0 mk->mk_struct_refs.refs.counter (-1073741824),0-s32max
CAPPED_DATA 0 &mk->mk_sem 1
CAPPED_DATA 0 &mk->mk_users 1
DATA_SOURCE 0 mk r fscrypt_find_master_key
CAPABLE 0 21
PARAM_COMPARE 0 &mk->mk_users != $0->mk_users.next
NOCHECK_CALL
LOCK2 0 &mk->mk_sem
TYPE_LOCK (struct fscrypt_master_key)->mk_sem

fs/crypto/keyring.c fscrypt_put_master_key() -> clear_mk_users()

Type Parameter Key Value
PARAM_VALUE 0 mk 4096-ptr_max
PARAM_VALUE 0 mk->mk_sem.first_waiter->handoff_set 0-1
PARAM_VALUE 0 mk->mk_sem.first_waiter->type 0-1
BUF_SIZE 0 mk (-1),648
BUF_SIZE 0 mk (-1),648
DATA_SOURCE 0 mk $0
NOSPEC 0 mk->mk_secret.size
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 mk->mk_secret.size 16-128[c]
USER_DATA 0 mk->mk_spec.__reserved 0
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &mk->mk_sem
HALF_LOCKED2 _T->lock
HALF_LOCKED2 0 &mk->mk_sem