|  | 
| 631 | 631 | 	.prog_type = BPF_PROG_TYPE_SK_REUSEPORT, | 
| 632 | 632 | 	.result = ACCEPT, | 
| 633 | 633 | }, | 
|  | 634 | +{ | 
|  | 635 | +	"bpf_mptcp_sock(skops->sk): no !skops->sk check", | 
|  | 636 | +	.insns = { | 
|  | 637 | +	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_1, offsetof(struct bpf_sock_ops, sk)), | 
|  | 638 | +	BPF_EMIT_CALL(BPF_FUNC_mptcp_sock), | 
|  | 639 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 640 | +	BPF_EXIT_INSN(), | 
|  | 641 | +	}, | 
|  | 642 | +	.prog_type = BPF_PROG_TYPE_SOCK_OPS, | 
|  | 643 | +	.result = REJECT, | 
|  | 644 | +	.errstr = "type=sock_or_null expected=sock_common", | 
|  | 645 | +}, | 
|  | 646 | +{ | 
|  | 647 | +	"bpf_mptcp_sock(skops->sk): no NULL check on ret", | 
|  | 648 | +	.insns = { | 
|  | 649 | +	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_1, offsetof(struct bpf_sock_ops, sk)), | 
|  | 650 | +	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 2), | 
|  | 651 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 652 | +	BPF_EXIT_INSN(), | 
|  | 653 | +	BPF_EMIT_CALL(BPF_FUNC_mptcp_sock), | 
|  | 654 | +	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_0, offsetof(struct bpf_mptcp_sock, token)), | 
|  | 655 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 656 | +	BPF_EXIT_INSN(), | 
|  | 657 | +	}, | 
|  | 658 | +	.prog_type = BPF_PROG_TYPE_SOCK_OPS, | 
|  | 659 | +	.result = REJECT, | 
|  | 660 | +	.errstr = "invalid mem access 'mptcp_sock_or_null'", | 
|  | 661 | +}, | 
|  | 662 | +{ | 
|  | 663 | +	"bpf_mptcp_sock(skops->sk): msk->token", | 
|  | 664 | +	.insns = { | 
|  | 665 | +	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_1, offsetof(struct bpf_sock_ops, sk)), | 
|  | 666 | +	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 2), | 
|  | 667 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 668 | +	BPF_EXIT_INSN(), | 
|  | 669 | +	BPF_EMIT_CALL(BPF_FUNC_mptcp_sock), | 
|  | 670 | +	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 0, 1), | 
|  | 671 | +	BPF_EXIT_INSN(), | 
|  | 672 | +	BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_0, offsetof(struct bpf_mptcp_sock, token)), | 
|  | 673 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 674 | +	BPF_EXIT_INSN(), | 
|  | 675 | +	}, | 
|  | 676 | +	.prog_type = BPF_PROG_TYPE_SOCK_OPS, | 
|  | 677 | +	.result = ACCEPT, | 
|  | 678 | +}, | 
|  | 679 | +{ | 
|  | 680 | +	"bpf_mptcp_sock(skops->sk): msk->token cannot be modified", | 
|  | 681 | +	.insns = { | 
|  | 682 | +	BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_1, offsetof(struct bpf_sock_ops, sk)), | 
|  | 683 | +	BPF_JMP_IMM(BPF_JNE, BPF_REG_1, 0, 2), | 
|  | 684 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 685 | +	BPF_EXIT_INSN(), | 
|  | 686 | +	BPF_EMIT_CALL(BPF_FUNC_mptcp_sock), | 
|  | 687 | +	BPF_JMP_IMM(BPF_JNE, BPF_REG_0, 0, 1), | 
|  | 688 | +	BPF_EXIT_INSN(), | 
|  | 689 | +	BPF_ST_MEM(BPF_W, BPF_REG_0, offsetof(struct bpf_mptcp_sock, token), 0x2a), | 
|  | 690 | +	BPF_MOV64_IMM(BPF_REG_0, 0), | 
|  | 691 | +	BPF_EXIT_INSN(), | 
|  | 692 | +	}, | 
|  | 693 | +	.prog_type = BPF_PROG_TYPE_SOCK_OPS, | 
|  | 694 | +	.result = REJECT, | 
|  | 695 | +	.errstr = "cannot write into mptcp_sock", | 
|  | 696 | +}, | 
0 commit comments