Commit b019fa32 authored by Nikolay Aleksandrov's avatar Nikolay Aleksandrov Committed by Dong Chenchen
Browse files

bonding: fix bond_ipsec_offload_ok return type

stable inclusion
from stable-v5.10.225
commit e8c85f2ff3693f51ade464128a47f8d2b4e0ab0b
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAOXZB
CVE: CVE-2024-44990

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e8c85f2ff3693f51ade464128a47f8d2b4e0ab0b



--------------------------------

[ Upstream commit fc59b9a5f7201b9f7272944596113a82cc7773d5 ]

Fix the return type which should be bool.

Fixes: 955b785e ("bonding: fix suspicious RCU usage in bond_ipsec_offload_ok()")
Signed-off-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
Reviewed-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarDong Chenchen <dongchenchen2@huawei.com>
parent caaf346b
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -571,34 +571,28 @@ static bool bond_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs)
	struct net_device *real_dev;
	struct slave *curr_active;
	struct bonding *bond;
	int err;
	bool ok = false;

	bond = netdev_priv(bond_dev);
	rcu_read_lock();
	curr_active = rcu_dereference(bond->curr_active_slave);
	real_dev = curr_active->dev;

	if (BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP) {
		err = false;
	if (BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP)
		goto out;
	}

	if (!xs->xso.real_dev) {
		err = false;
	if (!xs->xso.real_dev)
		goto out;
	}

	if (!real_dev->xfrmdev_ops ||
	    !real_dev->xfrmdev_ops->xdo_dev_offload_ok ||
	    netif_is_bond_master(real_dev)) {
		err = false;
	    netif_is_bond_master(real_dev))
		goto out;
	}

	err = real_dev->xfrmdev_ops->xdo_dev_offload_ok(skb, xs);
	ok = real_dev->xfrmdev_ops->xdo_dev_offload_ok(skb, xs);
out:
	rcu_read_unlock();
	return err;
	return ok;
}

static const struct xfrmdev_ops bond_xfrmdev_ops = {