1*4882a593Smuzhiyun { 2*4882a593Smuzhiyun "read uninitialized register", 3*4882a593Smuzhiyun .insns = { 4*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_0, BPF_REG_2), 5*4882a593Smuzhiyun BPF_EXIT_INSN(), 6*4882a593Smuzhiyun }, 7*4882a593Smuzhiyun .errstr = "R2 !read_ok", 8*4882a593Smuzhiyun .result = REJECT, 9*4882a593Smuzhiyun }, 10*4882a593Smuzhiyun { 11*4882a593Smuzhiyun "read invalid register", 12*4882a593Smuzhiyun .insns = { 13*4882a593Smuzhiyun BPF_MOV64_REG(BPF_REG_0, -1), 14*4882a593Smuzhiyun BPF_EXIT_INSN(), 15*4882a593Smuzhiyun }, 16*4882a593Smuzhiyun .errstr = "R15 is invalid", 17*4882a593Smuzhiyun .result = REJECT, 18*4882a593Smuzhiyun }, 19*4882a593Smuzhiyun { 20*4882a593Smuzhiyun "program doesn't init R0 before exit", 21*4882a593Smuzhiyun .insns = { 22*4882a593Smuzhiyun BPF_ALU64_REG(BPF_MOV, BPF_REG_2, BPF_REG_1), 23*4882a593Smuzhiyun BPF_EXIT_INSN(), 24*4882a593Smuzhiyun }, 25*4882a593Smuzhiyun .errstr = "R0 !read_ok", 26*4882a593Smuzhiyun .result = REJECT, 27*4882a593Smuzhiyun }, 28*4882a593Smuzhiyun { 29*4882a593Smuzhiyun "program doesn't init R0 before exit in all branches", 30*4882a593Smuzhiyun .insns = { 31*4882a593Smuzhiyun BPF_JMP_IMM(BPF_JGE, BPF_REG_1, 0, 2), 32*4882a593Smuzhiyun BPF_MOV64_IMM(BPF_REG_0, 1), 33*4882a593Smuzhiyun BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 2), 34*4882a593Smuzhiyun BPF_EXIT_INSN(), 35*4882a593Smuzhiyun }, 36*4882a593Smuzhiyun .errstr = "R0 !read_ok", 37*4882a593Smuzhiyun .errstr_unpriv = "R1 pointer comparison", 38*4882a593Smuzhiyun .result = REJECT, 39*4882a593Smuzhiyun }, 40