projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
b824c3e
)
net: ethernet: mtk_eth_soc: Reset prog ptr to old_prog in case of error in mtk_xdp_se...
author
Lorenzo Bianconi
<lorenzo@kernel.org>
Tue, 3 Mar 2026 17:56:39 +0000
(18:56 +0100)
committer
Paolo Abeni
<pabeni@redhat.com>
Thu, 5 Mar 2026 14:39:51 +0000
(15:39 +0100)
Reset eBPF program pointer to old_prog and do not decrease its ref-count
if mtk_open routine in mtk_xdp_setup() fails.
Fixes:
7c26c20da5d42
("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>
drivers/net/ethernet/mediatek/mtk_eth_soc.c
patch
|
blob
|
history
diff --git
a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index
e5e2ffa
..
ddc321a
100644
(file)
--- a/
drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/
drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@
-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;
}