mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 01:04:41 +01:00
net: ethernet: mtk_eth_soc: Reset prog ptr to old_prog in case of error in mtk_xdp_setup()
Reset eBPF program pointer to old_prog and do not decrease its ref-count
if mtk_open routine in mtk_xdp_setup() fails.
Fixes: 7c26c20da5 ("net: ethernet: mtk_eth_soc: add basic XDP support")
Suggested-by: Paolo Valerio <pvalerio@redhat.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260303-mtk-xdp-prog-ptr-fix-v2-1-97b6dbbe240f@kernel.org
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
b824c3e16c
commit
0abc73c8a4
1 changed files with 12 additions and 3 deletions
|
|
@ -3748,12 +3748,21 @@ static int mtk_xdp_setup(struct net_device *dev, struct bpf_prog *prog,
|
|||
mtk_stop(dev);
|
||||
|
||||
old_prog = rcu_replace_pointer(eth->prog, prog, lockdep_rtnl_is_held());
|
||||
|
||||
if (netif_running(dev) && need_update) {
|
||||
int err;
|
||||
|
||||
err = mtk_open(dev);
|
||||
if (err) {
|
||||
rcu_assign_pointer(eth->prog, old_prog);
|
||||
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
if (old_prog)
|
||||
bpf_prog_put(old_prog);
|
||||
|
||||
if (netif_running(dev) && need_update)
|
||||
return mtk_open(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue