Before detach the prog, we should check detach prog exist or not. Signed-off-by: Zhengchao Shao <shaozhengchao@xxxxxxxxxx> --- samples/bpf/xdp_fwd_user.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/samples/bpf/xdp_fwd_user.c b/samples/bpf/xdp_fwd_user.c index 1828487bae9a..a273ede3fd73 100644 --- a/samples/bpf/xdp_fwd_user.c +++ b/samples/bpf/xdp_fwd_user.c @@ -49,7 +49,18 @@ static int do_attach(int idx, int prog_fd, int map_fd, const char *name) static int do_detach(int idx, const char *name) { - int err; + int err = 1; + __u32 curr_prog_id; + + if (bpf_xdp_query_id(idx, xdp_flags, &curr_prog_id)) { + printf("ERROR: bpf_xdp_query_id failed\n"); + return err; + } + + if (!curr_prog_id) { + printf("ERROR: flags(0x%x) xdp prog is not attached to %s\n", xdp_flags, name); + return err; + } err = bpf_xdp_detach(idx, xdp_flags, NULL); if (err < 0) -- 2.17.1