Unverified Commit 54e67639 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14815 OLK-5.10

Merge Pull Request from: @ci-robot 
 
PR sync from: Yuntao Liu <liuyuntao12@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/CFQRYTDRWHD2RYIZXIA7GFAGAEO3S6RM/ 
CVE-2024-53190

Guilherme G. Piccoli (1):
  wifi: rtlwifi: Drastically reduce the attempts to read efuse in case
    of failures


-- 
2.34.1
 
https://gitee.com/src-openeuler/kernel/issues/IBEAG7 
 
Link:https://gitee.com/openeuler/kernel/pulls/14815

 

Reviewed-by: default avatarLi Nan <linan122@huawei.com>
Reviewed-by: default avatarZhang Jianhua <chris.zjh@huawei.com>
Signed-off-by: default avatarLi Nan <linan122@huawei.com>
parents 16f04147 13e566d6
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -162,10 +162,19 @@ void efuse_write_1byte(struct ieee80211_hw *hw, u16 address, u8 value)
void read_efuse_byte(struct ieee80211_hw *hw, u16 _offset, u8 *pbuf)
{
	struct rtl_priv *rtlpriv = rtl_priv(hw);
	u16 max_attempts = 10000;
	u32 value32;
	u8 readbyte;
	u16 retry;

	/*
	 * In case of USB devices, transfer speeds are limited, hence
	 * efuse I/O reads could be (way) slower. So, decrease (a lot)
	 * the read attempts in case of failures.
	 */
	if (rtlpriv->rtlhal.interface == INTF_USB)
		max_attempts = 10;

	rtl_write_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 1,
		       (_offset & 0xff));
	readbyte = rtl_read_byte(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL] + 2);
@@ -178,7 +187,7 @@ void read_efuse_byte(struct ieee80211_hw *hw, u16 _offset, u8 *pbuf)

	retry = 0;
	value32 = rtl_read_dword(rtlpriv, rtlpriv->cfg->maps[EFUSE_CTRL]);
	while (!(((value32 >> 24) & 0xff) & 0x80) && (retry < 10000)) {
	while (!(((value32 >> 24) & 0xff) & 0x80) && (retry < max_attempts)) {
		value32 = rtl_read_dword(rtlpriv,
					 rtlpriv->cfg->maps[EFUSE_CTRL]);
		retry++;