Skip to content

Commit 0abc73c

Browse files
LorenzoBianconiPaolo Abeni
authored andcommitted
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: 7c26c20 ("net: ethernet: mtk_eth_soc: add basic XDP support") Suggested-by: Paolo Valerio <[email protected]> Signed-off-by: Lorenzo Bianconi <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Paolo Abeni <[email protected]>
1 parent b824c3e commit 0abc73c

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
@@ -3748,12 +3748,21 @@ static int mtk_xdp_setup(struct net_device *dev, struct bpf_prog *prog,
37483748
mtk_stop(dev);
37493749

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

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

0 commit comments

Comments
 (0)