} test[MAX_SUBTESTS];
        int (*fill_helper)(struct bpf_test *self);
        __u8 frag_data[MAX_DATA];
+       int stack_depth; /* for eBPF only, since tests don't call verifier */
 };
 
 /* Large test cases need separate allocation and fill handler. */
 
        self->u.ptr.insns = insn;
        self->u.ptr.len = len;
+       self->stack_depth = 40;
 
        return 0;
 }
                { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x08, 0x06, 0, 0,
                  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                  0x10, 0xbf, 0x48, 0xd6, 0x43, 0xd6},
-               { { 38, 256 } }
+               { { 38, 256 } },
+               .stack_depth = 64,
        },
        /* BPF_ALU | BPF_MOV | BPF_X */
        {
                INTERNAL,
                { },
                { { 0, 0xff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_B: Store/Load byte: max positive",
                INTERNAL,
                { },
                { { 0, 0x7f } },
+               .stack_depth = 40,
        },
        {
                "STX_MEM_B: Store/Load byte: max negative",
                INTERNAL,
                { },
                { { 0, 0xff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_H: Store/Load half word: max negative",
                INTERNAL,
                { },
                { { 0, 0xffff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_H: Store/Load half word: max positive",
                INTERNAL,
                { },
                { { 0, 0x7fff } },
+               .stack_depth = 40,
        },
        {
                "STX_MEM_H: Store/Load half word: max negative",
                INTERNAL,
                { },
                { { 0, 0xffff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_W: Store/Load word: max negative",
                INTERNAL,
                { },
                { { 0, 0xffffffff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_W: Store/Load word: max positive",
                INTERNAL,
                { },
                { { 0, 0x7fffffff } },
+               .stack_depth = 40,
        },
        {
                "STX_MEM_W: Store/Load word: max negative",
                INTERNAL,
                { },
                { { 0, 0xffffffff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_DW: Store/Load double word: max negative",
                INTERNAL,
                { },
                { { 0, 0xffffffff } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_DW: Store/Load double word: max negative 2",
                INTERNAL,
                { },
                { { 0, 0x1 } },
+               .stack_depth = 40,
        },
        {
                "ST_MEM_DW: Store/Load double word: max positive",
                INTERNAL,
                { },
                { { 0, 0x7fffffff } },
+               .stack_depth = 40,
        },
        {
                "STX_MEM_DW: Store/Load double word: max negative",
                INTERNAL,
                { },
                { { 0, 0xffffffff } },
+               .stack_depth = 40,
        },
        /* BPF_STX | BPF_XADD | BPF_W/DW */
        {
                INTERNAL,
                { },
                { { 0, 0x22 } },
+               .stack_depth = 40,
        },
        {
                "STX_XADD_W: Test side-effects, r10: 0x12 + 0x10 = 0x22",
                INTERNAL,
                { },
                { { 0, 0 } },
+               .stack_depth = 40,
        },
        {
                "STX_XADD_W: Test side-effects, r0: 0x12 + 0x10 = 0x22",
                INTERNAL,
                { },
                { { 0, 0x12 } },
+               .stack_depth = 40,
        },
        {
                "STX_XADD_W: X + 1 + 1 + 1 + ...",
                INTERNAL,
                { },
                { { 0, 0x22 } },
+               .stack_depth = 40,
        },
        {
                "STX_XADD_DW: Test side-effects, r10: 0x12 + 0x10 = 0x22",
                INTERNAL,
                { },
                { { 0, 0 } },
+               .stack_depth = 40,
        },
        {
                "STX_XADD_DW: Test side-effects, r0: 0x12 + 0x10 = 0x22",
                INTERNAL,
                { },
                { { 0, 0x12 } },
+               .stack_depth = 40,
        },
        {
                "STX_XADD_DW: X + 1 + 1 + 1 + ...",
                /* Type doesn't really matter here as long as it's not unspec. */
                fp->type = BPF_PROG_TYPE_SOCKET_FILTER;
                memcpy(fp->insnsi, fptr, fp->len * sizeof(struct bpf_insn));
+               fp->aux->stack_depth = tests[which].stack_depth;
 
                /* We cannot error here as we don't need type compatibility
                 * checks.