diff mbox series

[bpf] libbpf: Only check mode flags in get_xdp_id

Message ID 20200420161843.46606-1-dsahern@kernel.org
State Accepted
Delegated to: BPF Maintainers
Headers show
Series [bpf] libbpf: Only check mode flags in get_xdp_id | expand

Commit Message

David Ahern April 20, 2020, 4:18 p.m. UTC
From: David Ahern <dsahern@gmail.com>

The commit in the Fixes tag changed get_xdp_id to only return prog_id
if flags is 0, but there are other XDP flags than the modes - e.g.,
XDP_FLAGS_UPDATE_IF_NOEXIST. Since the intention was only to look at
MODE flags, clear other ones before checking if flags is 0.

Fixes: f07cbad29741 ("libbpf: Fix bpf_get_link_xdp_id flags handling")
Signed-off-by: David Ahern <dsahern@gmail.com>
Cc: Andrey Ignatov <rdna@fb.com>
---
 tools/lib/bpf/netlink.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Andrey Ignatov April 20, 2020, 4:27 p.m. UTC | #1
David Ahern <dsahern@kernel.org> [Mon, 2020-04-20 09:18 -0700]:
> From: David Ahern <dsahern@gmail.com>
> 
> The commit in the Fixes tag changed get_xdp_id to only return prog_id
> if flags is 0, but there are other XDP flags than the modes - e.g.,
> XDP_FLAGS_UPDATE_IF_NOEXIST. Since the intention was only to look at
> MODE flags, clear other ones before checking if flags is 0.
> 
> Fixes: f07cbad29741 ("libbpf: Fix bpf_get_link_xdp_id flags handling")
> Signed-off-by: David Ahern <dsahern@gmail.com>
> Cc: Andrey Ignatov <rdna@fb.com>

Makes sense. Thanks.

Acked-by: Andrey Ignatov <rdna@fb.com>

> ---
>  tools/lib/bpf/netlink.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/tools/lib/bpf/netlink.c b/tools/lib/bpf/netlink.c
> index 342acacf7cda..692749d87348 100644
> --- a/tools/lib/bpf/netlink.c
> +++ b/tools/lib/bpf/netlink.c
> @@ -352,6 +352,8 @@ int bpf_get_link_xdp_egress_info(int ifindex, struct xdp_link_info *info,
>  
>  static __u32 get_xdp_id(struct xdp_link_info *info, __u32 flags)
>  {
> +	flags &= XDP_FLAGS_MODES;
> +
>  	if (info->attach_mode != XDP_ATTACHED_MULTI && !flags)
>  		return info->prog_id;
>  	if (flags & XDP_FLAGS_DRV_MODE)
> -- 
> 2.20.1
>
Alexei Starovoitov April 23, 2020, 5:08 a.m. UTC | #2
On Mon, Apr 20, 2020 at 9:27 AM Andrey Ignatov <rdna@fb.com> wrote:
>
> David Ahern <dsahern@kernel.org> [Mon, 2020-04-20 09:18 -0700]:
> > From: David Ahern <dsahern@gmail.com>
> >
> > The commit in the Fixes tag changed get_xdp_id to only return prog_id
> > if flags is 0, but there are other XDP flags than the modes - e.g.,
> > XDP_FLAGS_UPDATE_IF_NOEXIST. Since the intention was only to look at
> > MODE flags, clear other ones before checking if flags is 0.
> >
> > Fixes: f07cbad29741 ("libbpf: Fix bpf_get_link_xdp_id flags handling")
> > Signed-off-by: David Ahern <dsahern@gmail.com>
> > Cc: Andrey Ignatov <rdna@fb.com>
>
> Makes sense. Thanks.
>
> Acked-by: Andrey Ignatov <rdna@fb.com>

Applied. Thanks
diff mbox series

Patch

diff --git a/tools/lib/bpf/netlink.c b/tools/lib/bpf/netlink.c
index 342acacf7cda..692749d87348 100644
--- a/tools/lib/bpf/netlink.c
+++ b/tools/lib/bpf/netlink.c
@@ -352,6 +352,8 @@  int bpf_get_link_xdp_egress_info(int ifindex, struct xdp_link_info *info,
 
 static __u32 get_xdp_id(struct xdp_link_info *info, __u32 flags)
 {
+	flags &= XDP_FLAGS_MODES;
+
 	if (info->attach_mode != XDP_ATTACHED_MULTI && !flags)
 		return info->prog_id;
 	if (flags & XDP_FLAGS_DRV_MODE)