[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200412133204.43847-1-dsahern@kernel.org>
Date: Sun, 12 Apr 2020 07:32:04 -0600
From: David Ahern <dsahern@...nel.org>
To: daniel@...earbox.net, ast@...nel.org
Cc: netdev@...r.kernel.org, David Ahern <dsahern@...il.com>,
Toke Høiland-Jørgensen <toke@...hat.com>
Subject: [PATCH bpf] xdp: Reset prog in dev_change_xdp_fd when fd is negative
From: David Ahern <dsahern@...il.com>
The commit mentioned in the Fixes tag reuses the local prog variable
when looking up an expected_fd. The variable is not reset when fd < 0
causing a detach with the expected_fd set to actually call
dev_xdp_install for the existing program. The end result is that the
detach does not happen.
Fixes: 92234c8f15c8 ("xdp: Support specifying expected existing program when attaching XDP")
Signed-off-by: David Ahern <dsahern@...il.com>
Cc: Toke Høiland-Jørgensen <toke@...hat.com>
---
net/core/dev.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/core/dev.c b/net/core/dev.c
index df8097b8e286..522288177bbd 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -8667,8 +8667,8 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack,
const struct net_device_ops *ops = dev->netdev_ops;
enum bpf_netdev_command query;
u32 prog_id, expected_id = 0;
- struct bpf_prog *prog = NULL;
bpf_op_t bpf_op, bpf_chk;
+ struct bpf_prog *prog;
bool offload;
int err;
@@ -8734,6 +8734,7 @@ int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack,
} else {
if (!prog_id)
return 0;
+ prog = NULL;
}
err = dev_xdp_install(dev, bpf_op, extack, flags, prog);
--
2.20.1
Powered by blists - more mailing lists