Defined in 1 files as a prototype:
Defined in 1 files as a function:
Referenced in 9 files:
- block/bio.c, line 1392
- fs/btrfs/file.c, line 1261
- fs/fuse/file.c, line 1286
- fs/iomap/buffered-io.c, line 1246
- fs/netfs/buffered_write.c
- fs/ntfs/compress.c, line 1552
- fs/ntfs3/file.c, line 1145
- lib/iov_iter.c, line 500
- mm/filemap.c, line 4392
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 |