Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 9 files:

Smatch caller information:

fs/btrfs/file.c copy_one_range() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->_hugetlb_subpool 0
PARAM_VALUE 0 folio->lru.next 4096-ptr_max
PARAM_VALUE 0 folio->lru.prev 4096-ptr_max
PARAM_VALUE 0 folio->page.buddy_list.next 4096-ptr_max
PARAM_VALUE 0 folio->page.buddy_list.prev 4096-ptr_max
PARAM_VALUE 0 folio->page.memcg_data 0
PARAM_VALUE 0 folio->page.pcp_list.next 4096-ptr_max
PARAM_VALUE 0 folio->page.pcp_list.prev 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 0 folio->pgmap->ref.data 0,4096-ptr_max
PARAM_VALUE 0 folio->private 0
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 1 offset 1
DATA_SOURCE 3 i $1
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 offset 0-u64max[c]
USER_DATA 2 bytes 0-u64max[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 2 bytes unit_byte
HALF_LOCKED2 &pool->lock

fs/ntfs/compress.c ntfs_compress_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 1 offset 0-s32max
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 2 bytes 1
DATA_SOURCE 3 i $3
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 offset 1-8189[c]
USER_DATA 2 bytes 0-s32max,18446744073709547523-18446744073709551614[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &vi->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

mm/filemap.c generic_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 1 offset 1
CAPPED_DATA 1 offset 1
DATA_SOURCE 3 i $1
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
NOSPEC 3 i->count
NOSPEC 3 i->iov_offset
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 offset 0-u64max[c]
USER_DATA 2 bytes 0-s32max[c]
USER_DATA 3 i->count 1-s32max[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
HALF_LOCKED2 &inode->i_rwsem

fs/netfs/buffered_write.c netfs_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 2 bytes 0-1000000000
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 2 bytes 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r netfs_grab_folio_for_write
DATA_SOURCE 3 i $1
NOSPEC 0 folio->mapping->writeback_index
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 2 bytes 0-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &cinode->lock_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/netfs/buffered_write.c netfs_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 2 bytes 0-1000000000
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 1 offset 1
CAPPED_DATA 1 offset 1
CAPPED_DATA 2 bytes 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r netfs_grab_folio_for_write
DATA_SOURCE 3 i $1
NOSPEC 0 folio->mapping->writeback_index
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 2 bytes 0-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &cinode->lock_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/netfs/buffered_write.c netfs_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 1 offset 0
PARAM_VALUE 2 bytes 0-1000000000
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 2 bytes 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r netfs_grab_folio_for_write
DATA_SOURCE 3 i $1
NOSPEC 0 folio->mapping->writeback_index
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 2 bytes 0-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &cinode->lock_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/netfs/buffered_write.c netfs_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->mapping 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 2 bytes 0-1000000000
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 2 bytes 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r netfs_grab_folio_for_write
DATA_SOURCE 3 i $1
NOSPEC 0 folio->mapping->writeback_index
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 2 bytes 0-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &cinode->lock_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/netfs/buffered_write.c netfs_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 2 bytes 0-1000000000
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 2 bytes 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r netfs_grab_folio_for_write
DATA_SOURCE 3 i $1
NOSPEC 0 folio->mapping->writeback_index
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 2 bytes 0-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &cinode->lock_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/netfs/buffered_write.c netfs_perform_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.next->prev 4096-ptr_max
PARAM_VALUE 0 folio->_deferred_list.prev->next 4096-ptr_max
PARAM_VALUE 0 folio->page.zone_device_data->kref.refcount.refs.counter s32min-s32max
PARAM_VALUE 1 offset 0-u32max
PARAM_VALUE 2 bytes 0-1000000000
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 1 offset 1
CAPPED_DATA 1 offset 1
CAPPED_DATA 2 bytes 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r netfs_grab_folio_for_write
DATA_SOURCE 3 i $1
NOSPEC 0 folio->mapping->writeback_index
NOSPEC 1 offset
NOSPEC 2 bytes
NOSPEC 2 bytes
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 2 bytes 0-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &cinode->lock_sem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

block/bio.c bio_iov_iter_bounce_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 1 offset 0
PARAM_VALUE 3 i 4096-ptr_max
PARAM_VALUE 3 i->nofault 1
DATA_SOURCE 0 folio r folio_alloc_greedy
DATA_SOURCE 3 i $1
NOSPEC 2 bytes
NOSPEC 3 i->count
RX_PATH
TASK_NOT_RUNNING
USER_DATA 2 bytes 0-1048575[c]
USER_DATA 3 i->count 0-18446744073709551614[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
HALF_LOCKED2 &pool->lock

fs/iomap/buffered-io.c iomap_write_iter() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 0,4096-ptr_max
PARAM_VALUE 3 i 4096-ptr_max
DATA_SOURCE 3 i $1
NOSPEC 2 bytes
NOSPEC 2 bytes
NOSPEC 3 i->count
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 offset 0-u64max[c]
USER_DATA 2 bytes 0-s32max[c]
USER_DATA 3 i->count 0-18446744073709551614
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &vi->i_rwsem

fs/ntfs3/file.c ntfs_compress_write() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r _compound_head
DATA_SOURCE 3 i $1
NOSPEC 1 offset
RX_PATH
TASK_NOT_RUNNING
USER_DATA 1 offset 0-8190[c]
USER_DATA 2 bytes 0-s32max,18446744073709547522-18446744073709551614[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 1 offset unit_byte
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem

fs/fuse/file.c fuse_fill_write_pages() -> copy_folio_from_iter_atomic()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 3 i 4096-ptr_max
CAPPED_DATA 1 offset 1
CAPPED_DATA 2 bytes 1
DATA_SOURCE 0 folio r __filemap_get_folio
DATA_SOURCE 3 i $2
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 folio->mapping->writeback_index 0-524287[c]
USER_DATA 1 offset 0-u32max[c]
USER_DATA 2 bytes 1-1000000000[c]
USER_DATA 3 i->iov_offset 0-u64max[c]
UNITS 2 bytes unit_byte
LOCK2 &inode->i_rwsem
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct inode)->i_rwsem