union {
                struct sock_filter insns[MAX_INSNS];
                struct sock_filter_int insns_int[MAX_INSNS];
-       };
+       } u;
        enum {
                NO_DATA,
                EXPECTED_FAIL,
 static struct bpf_test tests[] = {
        {
                "TAX",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 1),
                        BPF_STMT(BPF_MISC | BPF_TAX, 0),
                        BPF_STMT(BPF_LD | BPF_IMM, 2),
        },
        {
                "TXA",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_MISC | BPF_TXA, 0),
                        BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
        },
        {
                "ADD_SUB_MUL_K",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 1),
                        BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 2),
                        BPF_STMT(BPF_LDX | BPF_IMM, 3),
        },
        {
                "DIV_KX",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 8),
                        BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 2),
                        BPF_STMT(BPF_MISC | BPF_TAX, 0),
        },
        {
                "AND_OR_LSH_K",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 0xff),
                        BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0xf0),
                        BPF_STMT(BPF_ALU | BPF_LSH | BPF_K, 27),
        },
        {
                "LD_IND",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_LD | BPF_H | BPF_IND, MAX_K),
                        BPF_STMT(BPF_RET | BPF_K, 1)
        },
        {
                "LD_ABS",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 1000),
                        BPF_STMT(BPF_RET | BPF_K, 1)
                },
        },
        {
                "LD_ABS_LL",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF),
                        BPF_STMT(BPF_MISC | BPF_TAX, 0),
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_LL_OFF + 1),
        },
        {
                "LD_IND_LL",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, SKF_LL_OFF - 1),
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
        },
        {
                "LD_ABS_NET",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF),
                        BPF_STMT(BPF_MISC | BPF_TAX, 0),
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, SKF_NET_OFF + 1),
        },
        {
                "LD_IND_NET",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, SKF_NET_OFF - 15),
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_ALU | BPF_ADD | BPF_X, 0),
        },
        {
                "LD_PKTTYPE",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_PKTTYPE),
                        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, SKB_TYPE, 1, 0),
        },
        {
                "LD_MARK",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_MARK),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_RXHASH",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_RXHASH),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_QUEUE",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_QUEUE),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_PROTOCOL",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 1),
                        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 20, 1, 0),
                        BPF_STMT(BPF_RET | BPF_K, 0),
        },
        {
                "LD_VLAN_TAG",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_VLAN_TAG),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_VLAN_TAG_PRESENT",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_VLAN_TAG_PRESENT),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_IFINDEX",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_IFINDEX),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_HATYPE",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_HATYPE),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "LD_CPU",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_CPU),
                        BPF_STMT(BPF_MISC | BPF_TAX, 0),
        },
        {
                "LD_NLATTR",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_IMM, 1),
                        BPF_STMT(BPF_MISC | BPF_TXA, 0),
                        BPF_STMT(BPF_LDX | BPF_IMM, 3),
        },
        {
                "LD_NLATTR_NEST",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 1),
                        BPF_STMT(BPF_LDX | BPF_IMM, 3),
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
        },
        {
                "LD_PAYLOAD_OFF",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
                                 SKF_AD_OFF + SKF_AD_PAY_OFFSET),
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
        },
        {
                "LD_ANC_XOR",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 10),
                        BPF_STMT(BPF_LDX | BPF_IMM, 300),
                        BPF_STMT(BPF_LD | BPF_W | BPF_ABS,
        },
        {
                "SPILL_FILL",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_LD | BPF_IMM, 2),
                        BPF_STMT(BPF_ALU | BPF_RSH, 1),
        },
        {
                "JEQ",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
                        BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_X, 0, 0, 1),
        },
        {
                "JGT",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_LD | BPF_B | BPF_ABS, 2),
                        BPF_JUMP(BPF_JMP | BPF_JGT | BPF_X, 0, 0, 1),
        },
        {
                "JGE",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LDX | BPF_LEN, 0),
                        BPF_STMT(BPF_LD | BPF_B | BPF_IND, MAX_K),
                        BPF_JUMP(BPF_JMP | BPF_JGE | BPF_K, 1, 1, 0),
        },
        {
                "JSET",
-               .insns = {
+               .u.insns = {
                        BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
                        BPF_JUMP(BPF_JMP | BPF_JA, 1, 1, 1),
                        BPF_JUMP(BPF_JMP | BPF_JA, 0, 0, 0),
        },
        {
                "tcpdump port 22",
-               .insns = {
+               .u.insns = {
                        { 0x28,  0,  0, 0x0000000c },
                        { 0x15,  0,  8, 0x000086dd },
                        { 0x30,  0,  0, 0x00000014 },
        },
        {
                "tcpdump complex",
-               .insns = {
+               .u.insns = {
                        /* tcpdump -nei eth0 'tcp port 22 and (((ip[2:2] -
                         * ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0) and
                         * (len > 115 or len < 30000000000)' -d
        },
        {
                "RET_A",
-               .insns = {
+               .u.insns = {
                        /* check that unitialized X and A contain zeros */
                        BPF_STMT(BPF_MISC | BPF_TXA, 0),
                        BPF_STMT(BPF_RET | BPF_A, 0)
        },
        {
                "INT: ADD trivial",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_IMM(BPF_MOV, R1, 1),
                        BPF_ALU64_IMM(BPF_ADD, R1, 2),
                        BPF_ALU64_IMM(BPF_MOV, R2, 3),
        },
        {
                "INT: MUL_X",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_IMM(BPF_MOV, R0, -1),
                        BPF_ALU64_IMM(BPF_MOV, R1, -1),
                        BPF_ALU64_IMM(BPF_MOV, R2, 3),
        },
        {
                "INT: MUL_X2",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU32_IMM(BPF_MOV, R0, -1),
                        BPF_ALU32_IMM(BPF_MOV, R1, -1),
                        BPF_ALU32_IMM(BPF_MOV, R2, 3),
        },
        {
                "INT: MUL32_X",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU32_IMM(BPF_MOV, R0, -1),
                        BPF_ALU64_IMM(BPF_MOV, R1, -1),
                        BPF_ALU32_IMM(BPF_MOV, R2, 3),
                 * different asm code.
                 */
                "INT: ADD 64-bit",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_IMM(BPF_MOV, R0, 0),
                        BPF_ALU64_IMM(BPF_MOV, R1, 1),
                        BPF_ALU64_IMM(BPF_MOV, R2, 2),
        },
        {
                "INT: ADD 32-bit",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU32_IMM(BPF_MOV, R0, 20),
                        BPF_ALU32_IMM(BPF_MOV, R1, 1),
                        BPF_ALU32_IMM(BPF_MOV, R2, 2),
        },
        {       /* Mainly checking JIT here. */
                "INT: SUB",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_IMM(BPF_MOV, R0, 0),
                        BPF_ALU64_IMM(BPF_MOV, R1, 1),
                        BPF_ALU64_IMM(BPF_MOV, R2, 2),
        },
        {       /* Mainly checking JIT here. */
                "INT: XOR",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_REG(BPF_SUB, R0, R0),
                        BPF_ALU64_REG(BPF_XOR, R1, R1),
                        BPF_JMP_REG(BPF_JEQ, R0, R1, 1),
        },
        {       /* Mainly checking JIT here. */
                "INT: MUL",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_IMM(BPF_MOV, R0, 11),
                        BPF_ALU64_IMM(BPF_MOV, R1, 1),
                        BPF_ALU64_IMM(BPF_MOV, R2, 2),
        },
        {
                "INT: ALU MIX",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_IMM(BPF_MOV, R0, 11),
                        BPF_ALU64_IMM(BPF_ADD, R0, -1),
                        BPF_ALU64_IMM(BPF_MOV, R2, 2),
        },
        {
                "INT: DIV + ABS",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_REG(BPF_MOV, R6, R1),
                        BPF_LD_ABS(BPF_B, 3),
                        BPF_ALU64_IMM(BPF_MOV, R2, 2),
        },
        {
                "INT: DIV by zero",
-               .insns_int = {
+               .u.insns_int = {
                        BPF_ALU64_REG(BPF_MOV, R6, R1),
                        BPF_ALU64_IMM(BPF_MOV, R7, 0),
                        BPF_LD_ABS(BPF_B, 3),
        },
        {
                "check: missing ret",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_LD | BPF_IMM, 1),
                },
                EXPECTED_FAIL,
        },
        {
                "check: div_k_0",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_ALU | BPF_DIV | BPF_K, 0),
                        BPF_STMT(BPF_RET | BPF_K, 0)
                },
        },
        {
                "check: unknown insn",
-               .insns = {
+               .u.insns = {
                        /* seccomp insn, rejected in socket filter */
                        BPF_STMT(BPF_LDX | BPF_W | BPF_ABS, 0),
                        BPF_STMT(BPF_RET | BPF_K, 0)
        },
        {
                "check: out of range spill/fill",
-               .insns = {
+               .u.insns = {
                        BPF_STMT(BPF_STX, 16),
                        BPF_STMT(BPF_RET | BPF_K, 0)
                },
        for (i = 0; i < ARRAY_SIZE(tests); i++) {
                pr_info("#%d %s ", i, tests[i].descr);
 
-               fprog.filter = tests[i].insns;
+               fprog.filter = tests[i].u.insns;
                fprog.len = get_length(fprog.filter);
 
                if (tests[i].data_type == SKB_INT) {
                        if (!fp_ext)
                                return -ENOMEM;
                        fp = fp_ext;
-                       memcpy(fp_ext->insns, tests[i].insns_int,
+                       memcpy(fp_ext->insns, tests[i].u.insns_int,
                               fprog.len * 8);
                        fp->len = fprog.len;
                        sk_filter_select_runtime(fp);