Defined in 2 files as a function:

Referenced in 2 files:

Smatch caller information:

fs/read_write.c vfs_read() -> (struct file_operations)->read()

Type Parameter Key Value
PARAM_VALUE 0 file 4096-ptr_max
PARAM_VALUE 0 file->f_op 4096-ptr_max
PARAM_VALUE 0 file->f_op->read 1-u64max
PARAM_VALUE 2 count 0-1000000000,2147479552
PARAM_VALUE 3 *ppos 0-1000000000
BUF_SIZE 3 ppos (-1),8
BUF_SIZE 3 ppos (-1),8
CAPPED_DATA 1 data 1
DATA_SOURCE 0 file $0
DATA_SOURCE 1 data $1
DATA_SOURCE 2 count $2 [m]
DATA_SOURCE 3 ppos $3
FUZZY_MAX 2 count 2147479552
CONTAINER 0 -24-80+0 $(-1)
BIT_INFO 0 file->f_mode 0x20001,0xffffffff
USER_DATA 1 data 0-u64max[c]
USER_DATA 2 count 0-1000000000
USER_DATA 3 *ppos 0-1000000000
USER_PTR 3 ppos

kernel/bpf/bpf_iter.c bpf_seq_read() -> (struct seq_operations)->show()

Type Parameter Key Value
PARAM_VALUE 0 file 4096-ptr_max
PARAM_VALUE 0 file->buf 1-u64max
PARAM_VALUE 0 file->count 0
PARAM_VALUE 0 file->from 0
PARAM_VALUE 0 file->lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 file->lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 file->lock.first_waiter->task->blocked_on 0
PARAM_VALUE 0 file->lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 file->lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.wait_lock.owner (-1)
PARAM_VALUE 0 file->lock.wait_lock.owner_cpu u32max
PARAM_VALUE 0 file->op 4096-ptr_max
PARAM_VALUE 1 data 1-ptr_max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file->buf 32768,u64max
CAPPED_DATA 0 &file->lock 1
CONTAINER 0 -24-208+0 $(-1)
LOCK2 0 &file->lock
TYPE_LOCK (struct seq_file)->lock

kernel/bpf/bpf_iter.c bpf_seq_read() -> (struct seq_operations)->show()

Type Parameter Key Value
PARAM_VALUE 0 file 4096-ptr_max
PARAM_VALUE 0 file->buf 1-u64max
PARAM_VALUE 0 file->count 0
PARAM_VALUE 0 file->from 0
PARAM_VALUE 0 file->lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 file->lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 file->lock.first_waiter->task->blocked_on 0
PARAM_VALUE 0 file->lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 file->lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.wait_lock.owner (-1)
PARAM_VALUE 0 file->lock.wait_lock.owner_cpu u32max
PARAM_VALUE 0 file->op 4096-ptr_max
PARAM_VALUE 1 data 1-ptr_max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file->buf 32768,u64max
CAPPED_DATA 0 &file->lock 1
CONTAINER 0 -24-208+0 $(-1)
PARAM_COMPARE 0 file->count <= $0->size
LOCK2 0 &file->lock
TYPE_LOCK (struct seq_file)->lock

fs/seq_file.c seq_read_iter() -> (struct seq_operations)->show()

Type Parameter Key Value
PARAM_VALUE 0 file 4096-ptr_max
PARAM_VALUE 0 file->buf 1-u64max
PARAM_VALUE 0 file->count 0
PARAM_VALUE 0 file->from 0
PARAM_VALUE 0 file->lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 file->lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 file->lock.first_waiter->task->blocked_on 0
PARAM_VALUE 0 file->lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 file->lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.wait_lock.owner (-1)
PARAM_VALUE 0 file->lock.wait_lock.owner_cpu u32max
PARAM_VALUE 0 file->op 4096-ptr_max
PARAM_VALUE 1 data 1-ptr_max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file->buf (-1)-2147479552
CAPPED_DATA 0 &file->lock 1
CONTAINER 0 -24-208+0 $(-1)
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 file->read_pos 0-13442450941[c]
LOCK2 0 &file->lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct seq_file)->lock

fs/seq_file.c seq_read_iter() -> (struct seq_operations)->show()

Type Parameter Key Value
PARAM_VALUE 0 file 4096-ptr_max
PARAM_VALUE 0 file->buf 1-u64max
PARAM_VALUE 0 file->count 0-999999999
PARAM_VALUE 0 file->from 0
PARAM_VALUE 0 file->lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 file->lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 file->lock.first_waiter->task->blocked_on 0
PARAM_VALUE 0 file->lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 file->lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.wait_lock.owner (-1)
PARAM_VALUE 0 file->lock.wait_lock.owner_cpu u32max
PARAM_VALUE 0 file->op 4096-ptr_max
PARAM_VALUE 1 data 1-ptr_max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file->buf (-1)-2147479552
CAPPED_DATA 0 file->count 1
CAPPED_DATA 0 &file->lock 1
CONTAINER 0 -24-208+0 $(-1)
PARAM_COMPARE 0 file->count != $0->size
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 file->read_pos 0-13442450941[c]
LOCK2 0 &file->lock
HALF_LOCKED2 &pool->lock
TYPE_LOCK (struct seq_file)->lock

fs/seq_file.c traverse() -> (struct seq_operations)->show()

Type Parameter Key Value
PARAM_VALUE 0 file 4096-ptr_max
PARAM_VALUE 0 file->buf 1-u64max
PARAM_VALUE 0 file->count 0
PARAM_VALUE 0 file->from 0
PARAM_VALUE 0 file->index 0
PARAM_VALUE 0 file->lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.first_waiter 0,4096-ptr_max
PARAM_VALUE 0 file->lock.first_waiter->list.prev->next 5159360019465732096
PARAM_VALUE 0 file->lock.osq.tail.counter 0-s32max
PARAM_VALUE 0 file->lock.wait_lock.dep_map->name 0-255
PARAM_VALUE 0 file->lock.wait_lock.owner (-1)
PARAM_VALUE 0 file->lock.wait_lock.owner_cpu u32max
PARAM_VALUE 0 file->op 4096-ptr_max
PARAM_VALUE 1 data 1-ptr_max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file s32min-(-2),1-s32max
BUF_SIZE 0 file->buf (-1)-2147479552
DATA_SOURCE 0 file $0
CONTAINER 0 -24-208+0 $(-1)
RX_PATH
TASK_NOT_RUNNING
LOCK2 0 &file->lock
TYPE_LOCK (struct seq_file)->lock