Commit 6fb67440 authored by KhaiWenTan's avatar KhaiWenTan Committed by Wang Liang
Browse files

net: stmmac: Fix zero-division error when disabling tc cbs

stable inclusion
from stable-v5.10.227
commit e33fe25b1efe4f2e6a5858786dbc82ae4c44ed4c
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAYR8Y
CVE: CVE-2024-49977

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



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

commit 675faf5a14c14a2be0b870db30a70764df81e2df upstream.

The commit b8c43360f6e4 ("net: stmmac: No need to calculate speed divider
when offload is disabled") allows the "port_transmit_rate_kbps" to be
set to a value of 0, which is then passed to the "div_s64" function when
tc-cbs is disabled. This leads to a zero-division error.

When tc-cbs is disabled, the idleslope, sendslope, and credit values the
credit values are not required to be configured. Therefore, adding a return
statement after setting the txQ mode to DCB when tc-cbs is disabled would
prevent a zero-division error.

Fixes: b8c43360f6e4 ("net: stmmac: No need to calculate speed divider when offload is disabled")
Cc: <stable@vger.kernel.org>
Co-developed-by: default avatarChoong Yong Liang <yong.liang.choong@linux.intel.com>
Signed-off-by: default avatarChoong Yong Liang <yong.liang.choong@linux.intel.com>
Signed-off-by: default avatarKhaiWenTan <khai.wen.tan@linux.intel.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20240918061422.1589662-1-khai.wen.tan@linux.intel.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarWang Liang <wangliang74@huawei.com>
parent 1a47bbfa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -362,6 +362,7 @@ static int tc_setup_cbs(struct stmmac_priv *priv,
			return ret;

		priv->plat->tx_queues_cfg[queue].mode_to_use = MTL_QUEUE_DCB;
		return 0;
	}

	/* Final adjustments for HW */