.result = REJECT,
        .errstr = "variable ctx access var_off=(0x0; 0x4)",
 },
+{
+       "pass ctx or null check, 1: ctx",
+       .insns = {
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_netns_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+       .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG,
+       .result = ACCEPT,
+},
+{
+       "pass ctx or null check, 2: null",
+       .insns = {
+               BPF_MOV64_IMM(BPF_REG_1, 0),
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_netns_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+       .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG,
+       .result = ACCEPT,
+},
+{
+       "pass ctx or null check, 3: 1",
+       .insns = {
+               BPF_MOV64_IMM(BPF_REG_1, 1),
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_netns_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+       .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG,
+       .result = REJECT,
+       .errstr = "R1 type=inv expected=ctx",
+},
+{
+       "pass ctx or null check, 4: ctx - const",
+       .insns = {
+               BPF_ALU64_IMM(BPF_ADD, BPF_REG_1, -612),
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_netns_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+       .expected_attach_type = BPF_CGROUP_UDP6_SENDMSG,
+       .result = REJECT,
+       .errstr = "dereference of modified ctx ptr",
+},
+{
+       "pass ctx or null check, 5: null (connect)",
+       .insns = {
+               BPF_MOV64_IMM(BPF_REG_1, 0),
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_netns_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+       .expected_attach_type = BPF_CGROUP_INET4_CONNECT,
+       .result = ACCEPT,
+},
+{
+       "pass ctx or null check, 6: null (bind)",
+       .insns = {
+               BPF_MOV64_IMM(BPF_REG_1, 0),
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_netns_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+       .expected_attach_type = BPF_CGROUP_INET4_POST_BIND,
+       .result = ACCEPT,
+},
+{
+       "pass ctx or null check, 7: ctx (bind)",
+       .insns = {
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_socket_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+       .expected_attach_type = BPF_CGROUP_INET4_POST_BIND,
+       .result = ACCEPT,
+},
+{
+       "pass ctx or null check, 8: null (bind)",
+       .insns = {
+               BPF_MOV64_IMM(BPF_REG_1, 0),
+               BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
+                            BPF_FUNC_get_socket_cookie),
+               BPF_MOV64_IMM(BPF_REG_0, 0),
+               BPF_EXIT_INSN(),
+       },
+       .prog_type = BPF_PROG_TYPE_CGROUP_SOCK,
+       .expected_attach_type = BPF_CGROUP_INET4_POST_BIND,
+       .result = REJECT,
+       .errstr = "R1 type=inv expected=ctx",
+},