1*1f5207b7SJohn Levon #include "check_debug.h" 2*1f5207b7SJohn Levon 3*1f5207b7SJohn Levon int copy_from_user(void *dest, void *src, int size); 4*1f5207b7SJohn Levon 5*1f5207b7SJohn Levon struct my_struct { 6*1f5207b7SJohn Levon int x, y; 7*1f5207b7SJohn Levon }; 8*1f5207b7SJohn Levon 9*1f5207b7SJohn Levon void *pointer; 10*1f5207b7SJohn Levon copy_stuff(struct my_struct * foo)11*1f5207b7SJohn Levonvoid copy_stuff(struct my_struct *foo) 12*1f5207b7SJohn Levon { 13*1f5207b7SJohn Levon copy_from_user(foo, pointer, sizeof(*foo)); 14*1f5207b7SJohn Levon } 15*1f5207b7SJohn Levon test(void)16*1f5207b7SJohn Levonvoid test(void) 17*1f5207b7SJohn Levon { 18*1f5207b7SJohn Levon struct my_struct foo; 19*1f5207b7SJohn Levon 20*1f5207b7SJohn Levon copy_stuff(&foo); 21*1f5207b7SJohn Levon __smatch_user_rl(foo.x); 22*1f5207b7SJohn Levon } 23*1f5207b7SJohn Levon /* 24*1f5207b7SJohn Levon * check-name: smatch user data #1 25*1f5207b7SJohn Levon * check-command: smatch -p=kernel -I.. sm_user_data1.c 26*1f5207b7SJohn Levon * 27*1f5207b7SJohn Levon * check-output-start 28*1f5207b7SJohn Levon sm_user_data1.c:21 test() user rl: 'foo.x' = 's32min-s32max' 29*1f5207b7SJohn Levon * check-output-end 30*1f5207b7SJohn Levon */ 31