Defined in 1 files as a function:

Referenced in 29 files:

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