Skip to content

Commit ff14cd4

Browse files
LorenzoBianconiSasha Levin
authored andcommitted
net: ethernet: mtk_eth_soc: Reset prog ptr to old_prog in case of error in mtk_xdp_setup()
[ Upstream commit 0abc73c ] Reset eBPF program pointer to old_prog and do not decrease its ref-count if mtk_open routine in mtk_xdp_setup() fails. Fixes: 7c26c20 ("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> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent aff1366 commit ff14cd4

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

drivers/net/ethernet/mediatek/mtk_eth_soc.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3749,12 +3749,21 @@ static int mtk_xdp_setup(struct net_device *dev, struct bpf_prog *prog,
37493749
mtk_stop(dev);
37503750

37513751
old_prog = rcu_replace_pointer(eth->prog, prog, lockdep_rtnl_is_held());
3752+
3753+
if (netif_running(dev) && need_update) {
3754+
int err;
3755+
3756+
err = mtk_open(dev);
3757+
if (err) {
3758+
rcu_assign_pointer(eth->prog, old_prog);
3759+
3760+
return err;
3761+
}
3762+
}
3763+
37523764
if (old_prog)
37533765
bpf_prog_put(old_prog);
37543766

3755-
if (netif_running(dev) && need_update)
3756-
return mtk_open(dev);
3757-
37583767
return 0;
37593768
}
37603769

0 commit comments

Comments
 (0)