dst_reg->type = PTR_TO_STACK;
                        dst_reg->imm = insn->imm;
                        return 0;
+               } else if (opcode == BPF_ADD &&
+                          BPF_CLASS(insn->code) == BPF_ALU64 &&
+                          dst_reg->type == PTR_TO_STACK &&
+                          ((BPF_SRC(insn->code) == BPF_X &&
+                            regs[insn->src_reg].type == CONST_IMM) ||
+                           BPF_SRC(insn->code) == BPF_K)) {
+                       if (BPF_SRC(insn->code) == BPF_X)
+                               dst_reg->imm += regs[insn->src_reg].imm;
+                       else
+                               dst_reg->imm += insn->imm;
+                       return 0;
                } else if (opcode == BPF_ADD &&
                           BPF_CLASS(insn->code) == BPF_ALU64 &&
                           (dst_reg->type == PTR_TO_PACKET ||
 
                .result = ACCEPT,
        },
        {
-               "unpriv: obfuscate stack pointer",
+               "stack pointer arithmetic",
                .insns = {
-                       BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
-                       BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
-                       BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
+                       BPF_MOV64_IMM(BPF_REG_1, 4),
+                       BPF_JMP_IMM(BPF_JA, 0, 0, 0),
+                       BPF_MOV64_REG(BPF_REG_7, BPF_REG_10),
+                       BPF_ALU64_IMM(BPF_ADD, BPF_REG_7, -10),
+                       BPF_ALU64_IMM(BPF_ADD, BPF_REG_7, -10),
+                       BPF_MOV64_REG(BPF_REG_2, BPF_REG_7),
+                       BPF_ALU64_REG(BPF_ADD, BPF_REG_2, BPF_REG_1),
+                       BPF_ST_MEM(0, BPF_REG_2, 4, 0),
+                       BPF_MOV64_REG(BPF_REG_2, BPF_REG_7),
+                       BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, 8),
+                       BPF_ST_MEM(0, BPF_REG_2, 4, 0),
                        BPF_MOV64_IMM(BPF_REG_0, 0),
                        BPF_EXIT_INSN(),
                },
-               .errstr_unpriv = "R2 pointer arithmetic",
-               .result_unpriv = REJECT,
                .result = ACCEPT,
        },
        {