答复: [PATCH bpf-next] samples/bpf: detach xdp prog when program exits unexpectedly in xdp_rxq_info_user

From: shaozhengchao
Date: Tue Apr 26 2022 - 20:45:51 EST


Thank you for your reply.

I will fix the compilation warning firstly, and then convert this sample to skeleton. Thank you very much.

-----邮件原件-----
发件人: Andrii Nakryiko [mailto:andrii.nakryiko@xxxxxxxxx]
发送时间: 2022年4月26日 12:35
收件人: shaozhengchao <shaozhengchao@xxxxxxxxxx>
抄送: bpf <bpf@xxxxxxxxxxxxxxx>; Networking <netdev@xxxxxxxxxxxxxxx>; open list <linux-kernel@xxxxxxxxxxxxxxx>; Alexei Starovoitov <ast@xxxxxxxxxx>; Daniel Borkmann <daniel@xxxxxxxxxxxxx>; David S. Miller <davem@xxxxxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Jesper Dangaard Brouer <hawk@xxxxxxxxxx>; john fastabend <john.fastabend@xxxxxxxxx>; Andrii Nakryiko <andrii@xxxxxxxxxx>; Martin Lau <kafai@xxxxxx>; Song Liu <songliubraving@xxxxxx>; Yonghong Song <yhs@xxxxxx>; KP Singh <kpsingh@xxxxxxxxxx>; weiyongjun (A) <weiyongjun1@xxxxxxxxxx>; yuehaibing <yuehaibing@xxxxxxxxxx>
主题: Re: [PATCH bpf-next] samples/bpf: detach xdp prog when program exits unexpectedly in xdp_rxq_info_user

On Thu, Apr 21, 2022 at 5:07 AM Zhengchao Shao <shaozhengchao@xxxxxxxxxx> wrote:
>
> When xdp_rxq_info_user program exits unexpectedly, it doesn't detach
> xdp prog of device, and other xdp prog can't be attached to the
> device. So call init_exit() to detach xdp prog when program exits unexpectedly.
>
> Signed-off-by: Zhengchao Shao <shaozhengchao@xxxxxxxxxx>
> ---
> samples/bpf/xdp_rxq_info_user.c | 21 +++++++++++++++------
> 1 file changed, 15 insertions(+), 6 deletions(-)
>

you are introducing a new compilation warning, please fix it


/data/users/andriin/linux/samples/bpf/xdp_rxq_info_user.c: In function
‘options2str’:
/data/users/andriin/linux/samples/bpf/xdp_rxq_info_user.c:153:1:
warning: control reaches end of non-void function [-Wreturn-type]
153 | }
| ^

It also would be good to instead use bpf_link-based XDP attachment that would be auto-detached automatically on process crash
(bpf_link_create() FTW). Please consider also converting this sample to skeleton (and then bpf_program__attach_xdp() as high-level alternative to bpf_link_create()).

> diff --git a/samples/bpf/xdp_rxq_info_user.c
> b/samples/bpf/xdp_rxq_info_user.c index f2d90cba5164..6378007e085a
> 100644
> --- a/samples/bpf/xdp_rxq_info_user.c
> +++ b/samples/bpf/xdp_rxq_info_user.c
> @@ -18,7 +18,7 @@ static const char *__doc__ = " XDP RX-queue info extract example\n\n"
> #include <getopt.h>
> #include <net/if.h>
> #include <time.h>

[...]