Defined in 1 files as a function:
Referenced in 29 files:
- drivers/block/rbd.c
- drivers/gpu/drm/radeon/radeon_device.c, line 1837
- drivers/gpu/drm/xe/xe_exec.c, line 229
- drivers/gpu/drm/xe/xe_hw_engine_group.c, line 454
- drivers/gpu/drm/xe/xe_vm.c, line 4204
- drivers/infiniband/core/device.c
- drivers/md/bcache/btree.c
- drivers/virt/coco/guest/tsm-mr.c, line 81
- fs/afs/dir.c, line 343
- fs/afs/symlink.c, line 199
- fs/btrfs/delayed-inode.c, line 1765
- fs/ceph/caps.c, line 4523
- fs/ceph/io.c
- fs/ceph/mds_client.c, line 4156
- fs/dlm/lowcomms.c, line 1653
- fs/namespace.c, line 1707
- fs/netfs/locking.c
- fs/nfs/io.c
- fs/nilfs2/segment.c, line 335
- fs/readdir.c, line 69
- fs/smb/client/dfs_cache.c, line 743
- fs/xfs/xfs_inode.c
- include/linux/mmap_lock.h, line 594
- include/linux/rwsem.h, line 288
- kernel/locking/rwsem.c, line 1701
- lib/test_context-analysis.c, line 326
- net/ceph/osd_client.c, line 2463
- security/keys/key.c, line 1264
- sound/core/control.c
Smatch caller information:
fs/netfs/locking.c netfs_start_io_direct() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/netfs/locking.c netfs_start_io_read() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/netfs/locking.c netfs_start_io_write() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
mm/mmap.c mmap_write_downgrade() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock |
fs/btrfs/delayed-inode.c btrfs_readdir_put_delayed_items() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &dir_fp->readdir_lock | ||
| HALF_LOCKED2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/ceph/io.c ceph_start_io_direct() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/ceph/io.c ceph_start_io_read() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/ceph/mds_client.c handle_reply() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &mdsc->snap_rwsem | ||
| LOCK2 | &session->s_mutex | ||
| TYPE_LOCK | (struct ceph_mds_client)->snap_rwsem | ||
| TYPE_LOCK | (struct ceph_mds_session)->s_mutex |
drivers/virt/coco/guest/tsm-mr.c tm_digest_read() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &ctx->rwsem | ||
| LOCK2 | &of->mutex | ||
| HALF_LOCKED2 | &of->prealloc_mutex | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct kernfs_open_file)->mutex | ||
| TYPE_LOCK | (struct tm_context)->rwsem |
mm/vma.c mmap_write_downgrade() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock |
fs/smb/client/dfs_cache.c cache_refresh_path() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 6795995192984174592 |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | global &htable_rw_lock |
drivers/infiniband/core/device.c add_client_context() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HOST_DATA | 0 | sem->osq.tail.counter | 0-s32max |
| LOCK2 | &device->client_data_rwsem | ||
| LOCK2 | global &clients_rwsem | ||
| LOCK2 | global &devices_rwsem | ||
| TYPE_LOCK | (struct ib_device)->client_data_rwsem |
drivers/infiniband/core/device.c enable_device_and_get() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 2028330967677628416 |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | global &devices_rwsem | ||
| HALF_LOCKED2 | &device->unregistration_lock |
drivers/infiniband/core/device.c ib_device_rename() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 2028330967677628416 |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | global &devices_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| HALF_LOCKED2 | global &audit_cmd_mutex.lock | ||
| HALF_LOCKED2 | global &hwsim_phys_lock | ||
| HALF_LOCKED2 | global &rtnl_mutex | ||
| HALF_LOCKED2 | global &rx_queue_mutex | ||
| HALF_LOCKED2 | rcu_read |
drivers/gpu/drm/xe/xe_vm.c xe_vm_bind_ioctl() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| NOCHECK_CALL | |||
| LOCK2 | &vm->lock | ||
| TYPE_LOCK | (struct xe_vm)->lock |
drivers/gpu/drm/radeon/radeon_device.c radeon_gpu_reset() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| NOCHECK_CALL | |||
| LOCK2 | &rdev->exclusive_lock | ||
| TYPE_LOCK | (struct radeon_device)->exclusive_lock |
fs/namespace.c namespace_unlock() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 6177550469095600128 |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &dentry->d_inode->i_rwsem | ||
| HALF_LOCKED2 | global &namespace_sem |
security/keys/key.c unregister_key_type() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 6640607383203508224 |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | global &key_types_sem | ||
| HALF_LOCKED2 | &dev->mutex |
fs/readdir.c wrap_directory_iterator() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &dir_fp->readdir_lock | ||
| HALF_LOCKED2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/dlm/lowcomms.c process_send_sockets() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &con->sock_lock | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct connection)->sock_lock |
fs/xfs/xfs_inode.c xfs_ilock_demote() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
fs/xfs/xfs_inode.c xfs_ilock_demote() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
fs/xfs/xfs_inode.c xfs_ilock_demote() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
drivers/block/rbd.c rbd_handle_acquired_lock() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| NOCHECK_CALL | |||
| LOCK2 | &rbd_dev->lock_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct rbd_device)->lock_rwsem |
drivers/block/rbd.c rbd_handle_released_lock() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| NOCHECK_CALL | |||
| LOCK2 | &rbd_dev->lock_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct rbd_device)->lock_rwsem |
sound/core/control.c snd_ctl_activate_id() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &card->controls_rwsem | ||
| TYPE_LOCK | (struct snd_card)->controls_rwsem |
sound/core/control.c snd_ctl_elem_write() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| NOCHECK_CALL | |||
| LOCK2 | &card->controls_rwsem | ||
| TYPE_LOCK | (struct snd_card)->controls_rwsem |
drivers/gpu/drm/xe/xe_hw_engine_group.c xe_hw_engine_group_get_mode() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &group->mode_sem | ||
| TYPE_LOCK | (struct xe_hw_engine_group)->mode_sem |
fs/nfs/io.c nfs_start_io_direct() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/nfs/io.c nfs_start_io_direct_nowait() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->wait_lock.owner | (-1) |
| PARAM_VALUE | 0 | sem->wait_lock.owner_cpu | u32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| HALF_LOCKED2 | &pool->lock | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
fs/nfs/io.c nfs_start_io_read() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &inode->i_rwsem | ||
| TYPE_LOCK | (struct inode)->i_rwsem |
drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_svm.c mmap_write_downgrade() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &mm->mmap_lock | ||
| LOCK2 | &svms->lock | ||
| HALF_LOCKED2 | &process_info->lock | ||
| TYPE_LOCK | (struct mm_struct)->mmap_lock | ||
| TYPE_LOCK | (struct svm_range_list)->lock |
fs/afs/symlink.c afs_get_link() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &vnode->validate_lock | ||
| TYPE_LOCK | (struct afs_vnode)->validate_lock |
mm/mmap_lock.c mmap_write_downgrade() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| NOCHECK_CALL | |||
| HALF_LOCKED2 | &mm->mmap_lock |
drivers/md/bcache/btree.c bch_btree_insert_check_key() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | b |
drivers/md/bcache/btree.c bch_btree_node_get() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL |
drivers/gpu/drm/xe/xe_exec.c xe_exec_ioctl() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| NOCHECK_CALL | |||
| LOCK2 | &vm->lock | ||
| HALF_LOCKED2 | &group->mode_sem | ||
| HALF_LOCKED2 | &vm->svm.gpusvm.notifier_lock | ||
| TYPE_LOCK | (struct xe_vm)->lock |
fs/afs/dir.c afs_read_dir() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &dvnode->validate_lock | ||
| TYPE_LOCK | (struct afs_vnode)->validate_lock |
lib/test_context-analysis.c test_rwsem_writer() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| NOCHECK_CALL | |||
| LOCK2 | &d->sem | ||
| TYPE_LOCK | (struct test_rwsem_data)->sem |
net/ceph/osd_client.c __submit_request() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| PREEMPT_ADD | |||
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &osdc->lock | ||
| LOCK2 | &osdc->lock | ||
| TYPE_LOCK | (struct ceph_osd_client)->lock |
fs/nilfs2/segment.c nilfs_relax_pressure_in_lock() -> downgrade_write()
| Type | Parameter | Key | Value |
|---|---|---|---|
| PARAM_VALUE | 0 | sem | 4096-ptr_max |
| PARAM_VALUE | 0 | sem->osq.tail.counter | 0-s32max |
| RX_PATH | |||
| TASK_NOT_RUNNING | |||
| NOCHECK_CALL | |||
| LOCK2 | &nilfs->ns_segctor_sem | ||
| HALF_LOCKED2 | &sb->s_fs_info->ns_segctor_sem | ||
| TYPE_LOCK | (struct the_nilfs)->ns_segctor_sem |