Defined in 1 files as a function:

Referenced in 9 files:

Smatch caller information:

fs/btrfs/dev-replace.c btrfs_bio_counter_sub() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1
DATA_SOURCE 1 amount $1
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/f2fs/segment.c inc_valid_block_count() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->counters 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
PARAM_VALUE 1 amount s64min-(-2),1-s64max
CAPPED_DATA 1 amount 1
CAPPED_DATA 1 amount 1
NOCHECK_CALL

fs/f2fs/segment.c inc_valid_block_count() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->counters 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
NOCHECK_CALL

fs/ext4/inode.c ext4_da_release_space() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
CAPPED_DATA 1 amount 1
DATA_SOURCE 1 amount $1 [m]
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &inode->i_mapping->invalidate_lock
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 &inode1->i_mapping->invalidate_lock
HALF_LOCKED2 &mapping->invalidate_lock

fs/ext4/inode.c ext4_da_update_reserve_space() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
CAPPED_DATA 1 amount 1
DATA_SOURCE 1 amount $1 [m]
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 &ei->i_block_reservation_lock
HALF_LOCKED2 &inode->i_rwsem
TYPE_LOCK (struct ext4_inode_info)->i_block_reservation_lock

mm/shmem.c shmem_inode_acct_blocks() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
DATA_SOURCE 1 amount $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &session->mutex
HALF_LOCKED2 &state.ctx->map_changing_lock
HALF_LOCKED2 _T->lock

mm/shmem.c shmem_inode_unacct_blocks() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1-s64max
DATA_SOURCE 1 amount $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &inode->i_rwsem

fs/f2fs/data.c inc_valid_block_count() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->counters 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
PARAM_VALUE 1 amount s64min-(-2),1-s64max
CAPPED_DATA 1 amount 1
CAPPED_DATA 1 amount 1
NOCHECK_CALL

fs/f2fs/data.c inc_valid_block_count() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->counters 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
NOCHECK_CALL

io_uring/io_uring.c io_put_task() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ctx->uring_lock

io_uring/io_uring.c io_uring_drop_tctx_refs() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1-u32max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &sqd->lock

fs/ext4/mballoc.c ext4_mb_mark_diskspace_used() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1-s32max
NOSPEC 1 amount
NOSPEC 1 amount
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 amount 2-s32max[c]
UNITS 1 amount unit_byte

fs/ext4/mballoc.c ext4_mb_new_blocks() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1-u32max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
USER_DATA 1 amount 1-u32max[c]
UNITS 1 amount unit_byte

fs/ext2/balloc.c ext2_new_blocks() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
CAPPED_DATA 1 amount 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 &ei->truncate_mutex

drivers/md/dm-crypt.c crypt_free_buffer_pages() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 0-4294967295
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

drivers/md/dm-crypt.c crypt_page_free() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 1 amount 1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL

fs/f2fs/file.c inc_valid_block_count() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->counters 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
PARAM_VALUE 1 amount s64min-(-2),1-s64max
CAPPED_DATA 1 amount 1
CAPPED_DATA 1 amount 1
NOCHECK_CALL
UNITS 1 amount unit_page

fs/f2fs/file.c inc_valid_block_count() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
PARAM_VALUE 0 fbc->counters 4096-ptr_max
PARAM_VALUE 0 fbc->lock.owner (-1)
PARAM_VALUE 0 fbc->lock.owner_cpu u32max
NOCHECK_CALL
UNITS 1 amount unit_page

fs/ext4/super.c ext4_mark_group_bitmap_corrupted() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
UNITS 1 amount unit_byte
HALF_LOCKED2 sb

fs/ext4/super.c ext4_mark_group_bitmap_corrupted() -> percpu_counter_sub()

Type Parameter Key Value
PARAM_VALUE 0 fbc 4096-ptr_max
DATA_SOURCE 1 amount r ext4_free_inodes_count
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
HALF_LOCKED2 sb