Defined in 6 files as a prototype:

Defined in 1 files as a macro:

Defined in 21 files as a function:

Referenced in 17 files:

Smatch caller information:

lib/iov_iter.c copy_to_user_iter() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 4096-ptr_max
PARAM_VALUE 1 src 4096-ptr_max
PARAM_VALUE 2 size 1-u64max
CAPPED_DATA 0 dst 1
CAPPED_DATA 2 size 1
CAPPED_DATA 2 size 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $3
DATA_SOURCE 2 size $2
NOSPEC 2 size
NOSPEC 2 size
RX_PATH
TASK_NOT_RUNNING
HOST_DATA 1 src 4096-ptr_max[c]
HOST_DATA 2 size 1-s32max[c]
USER_DATA 1 src 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 1 ==src2 8050

drivers/vhost/vhost.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 1-u64max
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 1 src
HALF_LOCKED2 &vq->mutex

mm/maccess.c __copy_to_user_inatomic() -> raw_copy_to_user()

Type Parameter Key Value
BUF_SIZE 1 src (-1),32
BUF_SIZE 1 src (-1),32
CAPPED_DATA 0 dst 1
DATA_SOURCE 0 dst $0
DATA_SOURCE 1 src $1
DATA_SOURCE 2 size $2
PARAM_COMPARE 1 src == $2
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
HOST_DATA 1 src 4096-ptr_max[c]
HOST_DATA 2 size 1-s32max[c]
USER_DATA 1 src 4096-ptr_max[c][u]
USER_DATA 2 size 1-u64max[c]
NO_OVERFLOW_SIMPLE 2 size
UNITS 0 dst unit_byte
UNITS 1 src unit_byte
UNITS 2 size unit_byte
BYTE_COUNT 1 ==src2 8050
HALF_LOCKED2 &vcpu->kvm->srcu

mm/kasan/kasan_test_c.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 1-18446744073709551614
PARAM_VALUE 1 src 16,4096-ptr_max
PARAM_VALUE 2 size 1-s32max
BUF_SIZE 1 src 120
BUF_SIZE 1 src 120
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
USER_PTR 1 src

mm/kasan/kasan_test_c.c __copy_to_user_inatomic() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 1-18446744073709551614
PARAM_VALUE 1 src 16,4096-ptr_max
PARAM_VALUE 2 size 1-s32max
BUF_SIZE 1 src 120
BUF_SIZE 1 src 120
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
USER_PTR 1 src

drivers/gpu/drm/i915/i915_query.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 1 src 5148302030943776768,5403522287358320640
PARAM_VALUE 2 size 16,88
BUF_SIZE 1 src 16,88
BUF_SIZE 1 src 16,88
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 88
UNITS 0 dst unit_byte
UNITS 2 size unit_byte

fs/select.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 1-u64max
PARAM_VALUE 1 src 4096-ptr_max
PARAM_VALUE 2 size 0-268435456
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
USER_DATA 2 size 0-268435456[c]

drivers/gpu/drm/i915/i915_gem.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 1 src 4096-ptr_max
PARAM_VALUE 2 size 1-4096
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
USER_DATA 2 size 2-4096[c]

drivers/gpu/drm/i915/i915_gem.c __copy_to_user_inatomic() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 1 src 4096-ptr_max
PARAM_VALUE 2 size 1-4096
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
NOSPEC 2 size
NOSPEC 2 size
PREEMPT_ADD
USER_DATA 2 size 2-4096[c]
NO_OVERFLOW_SIMPLE 2 size
UNITS 1 src unit_byte
UNITS 2 size unit_byte

lib/usercopy.c _inline_copy_to_user() -> raw_copy_to_user()

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

drivers/vhost/scsi.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 1 src 4096-ptr_max
PARAM_VALUE 2 size 16
BUF_SIZE 1 src 16
BUF_SIZE 1 src 16
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
UNITS 0 dst unit_byte
UNITS 2 size unit_byte
LOCK2 &vq->mutex
TYPE_LOCK (struct vhost_virtqueue)->mutex

arch/x86/kvm/../../../virt/kvm/kvm_main.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 0-ptr_max
PARAM_VALUE 2 size 0-s32max,18446744071562067968-u64max
BUF_SIZE 1 src s32min,(-1),1-65536
BUF_SIZE 1 src s32min,(-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 1 src 4096-ptr_max[c][u]
USER_DATA 1 *src s64min-s64max
USER_DATA 2 size 2-4095[c]
UNITS 0 dst unit_byte
UNITS 2 size unit_byte
USER_PTR 1 src
HALF_LOCKED2 &kvm->srcu

arch/x86/kvm/vmx/vmx.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 4096-ptr_max
PARAM_VALUE 1 src 4685813931918262272,6639183754634768384,18379471554275704832,18446612682070032384
PARAM_VALUE 2 size 1-2,4,4096
BUF_SIZE 1 src (-1),2,4
BUF_SIZE 1 src (-1),2,4
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 4096
UNITS 2 size unit_byte
HALF_LOCKED2 &kvm->slots_lock

arch/x86/kernel/fpu/signal.c __copy_to_user() -> raw_copy_to_user()

Type Parameter Key Value
PARAM_VALUE 0 dst 0,64-u64max
PARAM_VALUE 1 src 7801372520113164288,8523954333531799552
PARAM_VALUE 2 size 48,108
BUF_SIZE 0 dst (-1),48
BUF_SIZE 0 dst (-1),48
BUF_SIZE 1 src 48,108
BUF_SIZE 1 src 48,108
CAPPED_DATA 0 dst 1
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 108
RX_PATH
TASK_NOT_RUNNING
UNITS 2 size unit_byte