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 Levon void 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 Levon void 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