Defined in 1 files as a function:

Referenced in 4 files:

Smatch caller information:

ipc/util.c ipc_unlock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 2-u64max
DATA_SOURCE 0 perm $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ids->rwsem
HALF_LOCKED2 &s->lock
HALF_LOCKED2 rcu_read

ipc/sem.c sem_lock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
NOCHECK_CALL
LOCK2 &sem->lock
LOCK2 &sma->sem_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock
TYPE_LOCK (struct sem)->lock

ipc/sem.c sem_unlock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 0 perm->key s32min-s32max
USER_DATA 0 perm->mode 0-511[c]
LOCK2 rcu_read
HALF_LOCKED2 &ids->rwsem
HALF_LOCKED2 &sma->sem_perm.lock
HALF_LOCKED2 sma

ipc/sem.c semctl_stat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 1
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &sma->sem_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/sem.c semctl_stat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &sma->sem_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c do_msgrcv() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c do_msgrcv() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c do_msgrcv() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c do_msgsnd() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PARAM_VALUE 0 perm->refcount.refs.counter (-1073741824),0-s32max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c do_msgsnd() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c freeque() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 1
PREEMPT_ADD
NOCHECK_CALL
LOCK2 rcu_read
HALF_LOCKED2 &ids->rwsem
HALF_LOCKED2 &ipcp->lock
HALF_LOCKED2 &msq->q_perm.lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c msgctl_down() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c msgctl_down() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c msgctl_stat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 1
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c msgctl_stat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/msg.c newque() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PARAM_VALUE 0 perm->mode 0-511
PARAM_VALUE 0 perm->refcount.refs.counter 1
PARAM_VALUE 0 perm->security 0,4096-ptr_max
PARAM_VALUE 0 perm->seq 0-u16max
NOCHECK_CALL
USER_DATA 0 perm->key s32min-s32max
USER_DATA 0 perm->mode 0-511[c]
LOCK2 &ids->rwsem
LOCK2 &msq->q_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct ipc_ids)->rwsem
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c do_shmat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 1
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c do_shmat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c ipc_unlock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
DATA_SOURCE 0 perm $0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ipcp->lock
HALF_LOCKED2 &shp->shm_perm.lock
HALF_LOCKED2 rcu_read

ipc/shm.c newseg() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PARAM_VALUE 0 perm->mode 0-511
PARAM_VALUE 0 perm->refcount.refs.counter 1
PARAM_VALUE 0 perm->security 0,4096-ptr_max
PARAM_VALUE 0 perm->seq 0-u16max
NOCHECK_CALL
USER_DATA 0 perm->key s32min-s32max
USER_DATA 0 perm->mode 0-511[c]
LOCK2 &ids->rwsem
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct ipc_ids)->rwsem
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c shm_lock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 1
PARAM_VALUE 0 perm->lock.rlock.dep_map->name 0-255
DATA_SOURCE 0 perm r ipc_obtain_object_idr
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 rcu_read
LOCK2 0 &perm->lock
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c shmctl_do_lock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PARAM_VALUE 0 perm->mode 0-64511
NS_CAPABLE 0 14
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c shmctl_do_lock() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c shmctl_down() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c shmctl_stat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 1
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock

ipc/shm.c shmctl_stat() -> ipc_unlock_object()

Type Parameter Key Value
PARAM_VALUE 0 perm 4096-ptr_max
PARAM_VALUE 0 perm->deleted 0
PREEMPT_ADD <- disables preempt
NOCHECK_CALL
LOCK2 &shp->shm_perm.lock
LOCK2 rcu_read
TYPE_LOCK (struct kern_ipc_perm)->lock