Commit 0abc73c8 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Paolo Abeni
Browse files

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: 7c26c20d ("net: ethernet: mtk_eth_soc: add basic XDP support")
Suggested-by: default avatarPaolo Valerio <pvalerio@redhat.com>
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260303-mtk-xdp-prog-ptr-fix-v2-1-97b6dbbe240f@kernel.org


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent b824c3e1
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -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;
}