Defined in 6 files as a prototype:

Defined in 1 files as a macro:

Defined in 21 files as a function:

Referenced in 20 files:

Smatch caller information:

lib/iov_iter.c copy_from_user_iter() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 4096-ptr_max
PARAM_VALUE 2 size 1-u64max
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $3
DATA_SOURCE 1 src r mask_user_address
DATA_SOURCE 2 size $2
NOSPEC 2 size
NOSPEC 2 size
RX_PATH
TASK_NOT_RUNNING
HOST_DATA 0 dst 4096-ptr_max[c]
HOST_DATA 2 size 1-s32max[c]
USER_DATA 0 dst 4096-ptr_max[c][u]
USER_DATA 2 size 1-u64max[c]
UNITS 0 dst unit_byte
UNITS 1 src unit_byte
UNITS 2 size unit_byte
BYTE_COUNT 0 ==dst2 8050

drivers/vhost/vhost.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 5686255541217935360
PARAM_VALUE 1 src 1-u64max
PARAM_VALUE 2 size 16
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
RX_PATH
TASK_NOT_RUNNING
UNITS 2 size unit_byte
HALF_LOCKED2 &vq->mutex
TYPE_LOCK (struct vhost_virtqueue)->mutex

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 16,4096-ptr_max
PARAM_VALUE 2 size 1-2147483648
BUF_SIZE 0 dst (-1),8
BUF_SIZE 0 dst (-1),8
CAPPED_DATA 0 dst 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
UNITS 2 size unit_byte

drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c __copy_from_user_inatomic() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 897870973347024896
PARAM_VALUE 2 size 0-512
BUF_SIZE 0 dst 512
BUF_SIZE 0 dst 512
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
HALF_LOCKED2 pool->obj->base.resv

arch/x86/lib/usercopy.c copy_from_user_nmi() -> raw_copy_from_user()

Type Parameter Key Value
BUF_SIZE 0 dst (-1),15,64
BUF_SIZE 0 dst (-1),15,64
CAPPED_DATA 1 src 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 dst 4096-ptr_max[u]
USER_DATA 1 src 4096-ptr_max[c]
USER_DATA 2 size 0-327675[c]
NO_OVERFLOW_SIMPLE 2 size
UNITS 2 size unit_byte
HALF_LOCKED2 rcu_read

kernel/trace/trace_syscalls.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 2 size 0-169
BUF_SIZE 0 dst (-1),510,4096
BUF_SIZE 0 dst (-1),510,4096
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
FUZZY_MAX 2 size 169
USER_DATA 2 size 0-169[c]
NO_OVERFLOW_SIMPLE 0 dst

mm/maccess.c __copy_from_user_inatomic() -> raw_copy_from_user()

Type Parameter Key Value
BUF_SIZE 0 dst (-1),8,256
BUF_SIZE 0 dst (-1),8,256
CAPPED_DATA 1 src 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dst
UNITS 0 dst unit_byte
UNITS 1 src unit_byte
UNITS 2 size unit_byte
USER_PTR 0 dst

arch/x86/lib/insn-eval.c __copy_from_user_inatomic() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 2 size 15
BUF_SIZE 0 dst 15
BUF_SIZE 0 dst 15
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
PREEMPT_ADD
NO_OVERFLOW_SIMPLE 0 dst

arch/x86/kvm/vmx/sgx.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 18379471554275704832,18446612682070032384
PARAM_VALUE 2 size 4096
CAPPED_DATA 0 dst 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
UNITS 2 size unit_byte

mm/kasan/kasan_test_c.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 16,4096-ptr_max
PARAM_VALUE 1 src 1-18446744073709551614
PARAM_VALUE 2 size 1-s32max
BUF_SIZE 0 dst 120
BUF_SIZE 0 dst 120
CAPPED_DATA 0 dst 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
USER_PTR 0 dst

mm/kasan/kasan_test_c.c __copy_from_user_inatomic() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 16,4096-ptr_max
PARAM_VALUE 1 src 1-18446744073709551614
PARAM_VALUE 2 size 1-s32max
BUF_SIZE 0 dst 120
BUF_SIZE 0 dst 120
CAPPED_DATA 0 dst 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
USER_PTR 0 dst

mm/memory.c __copy_from_user_inatomic() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 18379471554275704832,18446612682070032384
PARAM_VALUE 1 src 0,4096-u64max
PARAM_VALUE 2 size 4096
CAPPED_DATA 0 dst 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
RX_PATH
TASK_NOT_RUNNING
UNITS 2 size unit_byte
HALF_LOCKED2 &mm->mmap_lock
HALF_LOCKED2 vmf->ptl

kernel/trace/trace.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 2 size 0-4096
BUF_SIZE 0 dst 510,4096
BUF_SIZE 0 dst 510,4096
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
FUZZY_MAX 2 size 4096
USER_DATA 2 size 0-4096[c]
NO_OVERFLOW_SIMPLE 0 dst
UNITS 2 size unit_byte

arch/x86/kernel/fpu/regset.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 1865865750782967808,2996045642319462400,4812849990974570496
PARAM_VALUE 2 size 8,108,512
CAPPED_DATA 0 dst 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2

drivers/gpu/drm/i915/i915_gem.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 4096-ptr_max
PARAM_VALUE 2 size 1-4096
CAPPED_DATA 0 dst 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
USER_DATA 2 size 2-4096[c]
NO_OVERFLOW_SIMPLE 2 size

lib/usercopy.c _inline_copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src r mask_user_address
DATA_SOURCE 2 size $2

arch/x86/kvm/../../../virt/kvm/kvm_main.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 1 src 0-ptr_max
PARAM_VALUE 2 size 1-4096
BUF_SIZE 0 dst (-1),1-65536
BUF_SIZE 0 dst (-1),1-65536
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
USER_DATA 0 dst 4096-ptr_max[c][u]
USER_DATA 0 *dst s64min-s64max
USER_DATA 2 size 1-4096[c]
UNITS 1 src unit_byte
UNITS 2 size unit_byte
USER_PTR 0 dst

arch/x86/kvm/../../../virt/kvm/kvm_main.c __copy_from_user_inatomic() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 1 src 4096-ptr_max
PARAM_VALUE 2 size 4,8,32,64
BUF_SIZE 0 dst 4,8,32,64
BUF_SIZE 0 dst 4,8,32,64
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
RX_PATH
TASK_NOT_RUNNING
NO_OVERFLOW_SIMPLE 0 dst
NO_OVERFLOW_SIMPLE 2 size
UNITS 1 src unit_byte
UNITS 2 size unit_byte
HALF_LOCKED2 &vcpu->kvm->mmu_lock

arch/x86/kernel/fpu/signal.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 1 src 1-u64max
PARAM_VALUE 2 size 48,108,512
BUF_SIZE 0 dst (-1),108,512
BUF_SIZE 0 dst (-1),108,512
BUF_SIZE 1 src (-1),48
BUF_SIZE 1 src (-1),48
CAPPED_DATA 1 src 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
HARD_MAX 2 size 512
UNITS 1 src unit_byte
UNITS 2 size unit_byte

arch/x86/kernel/tls.c __copy_from_user() -> raw_copy_from_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 2787234788068900864
BUF_SIZE 0 dst 48
BUF_SIZE 0 dst 48
CAPPED_DATA 1 src 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2