0001 {
0002 "d_path accept",
0003 .insns = {
0004 BPF_LDX_MEM(BPF_W, BPF_REG_1, BPF_REG_1, 0),
0005 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0006 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0007 BPF_MOV64_IMM(BPF_REG_6, 0),
0008 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_6, 0),
0009 BPF_LD_IMM64(BPF_REG_3, 8),
0010 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_d_path),
0011 BPF_MOV64_IMM(BPF_REG_0, 0),
0012 BPF_EXIT_INSN(),
0013 },
0014 .result = ACCEPT,
0015 .prog_type = BPF_PROG_TYPE_TRACING,
0016 .expected_attach_type = BPF_TRACE_FENTRY,
0017 .kfunc = "dentry_open",
0018 },
0019 {
0020 "d_path reject",
0021 .insns = {
0022 BPF_LDX_MEM(BPF_W, BPF_REG_1, BPF_REG_1, 0),
0023 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
0024 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
0025 BPF_MOV64_IMM(BPF_REG_6, 0),
0026 BPF_STX_MEM(BPF_DW, BPF_REG_2, BPF_REG_6, 0),
0027 BPF_LD_IMM64(BPF_REG_3, 8),
0028 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_d_path),
0029 BPF_MOV64_IMM(BPF_REG_0, 0),
0030 BPF_EXIT_INSN(),
0031 },
0032 .errstr = "helper call is not allowed in probe",
0033 .result = REJECT,
0034 .prog_type = BPF_PROG_TYPE_TRACING,
0035 .expected_attach_type = BPF_TRACE_FENTRY,
0036 .kfunc = "d_path",
0037 },