Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 28 files:

Smatch caller information:

lib/test_hmm.c dmirror_devmem_fault_alloc_and_copy() -> unlock_page()

Type Parameter Key Value
DATA_SOURCE 0 page r migrate_pfn_to_page
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mm->mmap_lock

fs/ntfs3/frecord.c ni_decompress_file() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ntfs3/frecord.c ni_decompress_file() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ntfs3/frecord.c ni_read_folio_cmpr() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

drivers/mtd/devices/block2mtd.c _block2mtd_erase() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page (-1),64
BUF_SIZE 0 page (-1),64
DATA_SOURCE 0 page r page_read
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &dev->write_mutex
HALF_LOCKED2 &dev->lock
HALF_LOCKED2 &ftl->mutex
HALF_LOCKED2 &master->master.chrdev_lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 global &mtd_table_mutex
TYPE_LOCK (struct block2mtd_dev)->write_mutex

drivers/mtd/devices/block2mtd.c _block2mtd_write() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page (-1),64
BUF_SIZE 0 page (-1),64
DATA_SOURCE 0 page r page_read
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &dev->write_mutex
HALF_LOCKED2 &dev->lock
HALF_LOCKED2 &ftl->mutex
HALF_LOCKED2 &master->master.chrdev_lock
HALF_LOCKED2 &mbd->lock
TYPE_LOCK (struct block2mtd_dev)->write_mutex

fs/ntfs/compress.c ntfs_decompress() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &ni->runlist.lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page 64
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page 64
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page 64
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page (-1),64
BUF_SIZE 0 page (-1),64
DATA_SOURCE 0 page r read_mapping_page
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &ntfs_cb_lock
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &ni->runlist.lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &ni->runlist.lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &ni->runlist.lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &ni->runlist.lock

fs/ntfs/compress.c ntfs_read_compressed_block() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &ni->runlist.lock

fs/fuse/readdir.c fuse_add_dirent_to_cache() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &dir_fp->readdir_lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/fuse/readdir.c fuse_readdir_cached() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page r find_get_page_flags
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/fuse/readdir.c fuse_readdir_cached() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page r find_get_page_flags
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/fuse/readdir.c fuse_readdir_cached() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page r find_get_page_flags
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/ntfs/dir.c ntfs_filldir() -> unlock_page()

Type Parameter Key Value
DATA_SOURCE 0 page $2
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &ndir->mrec_lock
HALF_LOCKED2 &dir_fp->readdir_lock
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem
TYPE_LOCK (struct ntfs_inode)->mrec_lock

fs/f2fs/data.c f2fs_read_multi_pages() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/btrfs/tests/extent-io-tests.c test_find_delalloc() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page r find_or_create_page
NOCHECK_CALL

fs/btrfs/tests/extent-io-tests.c test_find_delalloc() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
NOCHECK_CALL

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_migrate.c svm_migrate_put_sys_page() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &prange->migrate_mutex
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 &p->svms.lock
HALF_LOCKED2 &pool->lock
HALF_LOCKED2 &process_info->lock
HALF_LOCKED2 &svms->lock
TYPE_LOCK (struct svm_range)->migrate_mutex

drivers/gpu/drm/amd/amdgpu/../amdkfd/kfd_migrate.c svm_migrate_put_vram_page() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mm->mmap_lock
LOCK2 &prange->migrate_mutex
LOCK2 &svms->lock
HALF_LOCKED2 &process_info->lock
TYPE_LOCK (struct mm_struct)->mmap_lock
TYPE_LOCK (struct svm_range)->migrate_mutex
TYPE_LOCK (struct svm_range_list)->lock

fs/isofs/compress.c zisofs_read_folio() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

drivers/mtd/nand/raw/nandsim.c ns_get_pages() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
DATA_SOURCE 0 page r find_or_create_page
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/gpu/drm/i915/gem/i915_gem_userptr.c i915_gem_userptr_put_pages() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 page unit_page
HALF_LOCKED2 obj->base.resv

drivers/target/target_core_user.c tcmu_blocks_release() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &udev->cmdr_lock
HALF_LOCKED2 global &root_udev_mutex
TYPE_LOCK (struct tcmu_dev)->cmdr_lock

fs/squashfs/file.c squashfs_readahead() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/squashfs/file.c squashfs_readahead() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/squashfs/file.c squashfs_readahead_fragment() -> unlock_page()

Type Parameter Key Value
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

mm/memory.c do_cow_fault() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 0
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 0 page unit_page
HALF_LOCKED2 &mm->mmap_lock

fs/btrfs/free-space-cache.c io_ctl_drop_pages() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &caching_ctl->mutex
HALF_LOCKED2 &fs_info->commit_root_sem
HALF_LOCKED2 &pool->lock

drivers/gpu/drm/nouveau/nouveau_dmem.c nouveau_dmem_page_free_locked() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page (-1),64
BUF_SIZE 0 page (-1),64
DATA_SOURCE 0 page $1
NOCHECK_CALL
LOCK2 &mm->mmap_lock
TYPE_LOCK (struct mm_struct)->mmap_lock

mm/memory-failure.c me_unknown() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &mf_mutex
HALF_LOCKED2 &attr->mutex
HALF_LOCKED2 &of->mutex
HALF_LOCKED2 &pool->lock

mm/memory-failure.c try_to_split_thp_page() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
PARAM_VALUE 0 page->flags.f 0-18446744073709551614
CAPPED_DATA 0 page 1
DATA_SOURCE 0 page $0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &mf_mutex
HALF_LOCKED2 &of->mutex

drivers/char/virtio_console.c pipe_to_sg() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
PARAM_VALUE 0 page->memcg_data 0
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/ceph/addr.c ceph_filemap_fault() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
DATA_SOURCE 0 page r find_or_create_page
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &mapping->invalidate_lock
TYPE_LOCK (struct address_space)->invalidate_lock

fs/ceph/addr.c ceph_fill_inline_data() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page r find_or_create_page
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mdsc->snap_rwsem

fs/ceph/addr.c ceph_fill_inline_data() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
DATA_SOURCE 0 page r find_or_create_page
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mdsc->snap_rwsem

fs/ceph/addr.c ceph_submit_write() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
BUF_SIZE 0 page 64
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/ceph/addr.c ceph_submit_write() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock

fs/ceph/addr.c writepages_finish() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
NOCHECK_CALL
HALF_LOCKED2 &pool->lock

fs/ntfs3/fsntfs.c ntfs_bio_fill_1() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
PARAM_VALUE 0 page->_refcount.counter 1
DATA_SOURCE 0 page r alloc_pages_noprof
PREEMPT_ADD <- disables preempt
NOCHECK_CALL

fs/f2fs/compress.c f2fs_decompress_end_io() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/f2fs/compress.c f2fs_drop_rpages() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 1-u64max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/f2fs/compress.c f2fs_write_raw_pages() -> unlock_page()

Type Parameter Key Value
PARAM_VALUE 0 page 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &mapping->invalidate_lock
HALF_LOCKED2 &sbi->writepages