root/usr/src/tools/smatch/src/validation/sm_user_data3.c
#include "check_debug.h"

int copy_from_user(void *dest, void *src, int size){}

struct my_struct {
        int x, y;
};

struct my_struct *returns_filter(struct my_struct *p)
{
        return p;
}

struct my_struct *src, *a, *b;
void test(void)
{
        copy_from_user(a, src, sizeof(*a));
        b = returns_filter(a);
        __smatch_user_rl(b->y);
        b = returns_filter(src);
        __smatch_user_rl(b->y);
        b = returns_filter(a);
        __smatch_user_rl(b->y);
}

/*
 * check-name: smatch user data #3
 * check-command: smatch -p=kernel -I.. sm_user_data3.c
 *
 * check-output-start
sm_user_data3.c:19 test() user rl: 'b->y' = 's32min-s32max'
sm_user_data3.c:21 test() user rl: 'b->y' = ''
sm_user_data3.c:23 test() user rl: 'b->y' = 's32min-s32max'
 * check-output-end
 */