lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250728112638.39412-1-immu.ahmed1905@gmail.com>
Date: Mon, 28 Jul 2025 16:56:38 +0530
From: Mande Imran Ahmed <immu.ahmed1905@...il.com>
To: pkshih@...ltek.com,
	kevin_yang@...ltek.com,
	rtl8821cerfe2@...il.com,
	phhuang@...ltek.com,
	damon.chen@...ltek.com
Cc: linux-kernel@...r.kernel.org,
	Mande Imran Ahmed <immu.ahmed1905@...il.com>
Subject: [PATCH v2] net:realtek:use sysfs_emit() instead of scnprintf() for sysfs consistency

Update the Realtek rtw89 wireless driver to replace scnprintf() with
sysfs_emit() for formatting sysfs attribute output, in line with the
recommendations from Documentation/filesystems/sysfs.rst.

This change enhances the safety and correctness of sysfs handling,
promotes consistency throughout the kernel, and aids long-term
maintainability.

Functionality verified using ping, iperf, and connection tests to ensure
stability after the changes.

Changes since v1:
- Replaced sysfs_emit() with sysfs_emit_at()
- Removed unused function parameters.

Signed-off-by: Mande Imran Ahmed <immu.ahmed1905@...il.com>
---
 drivers/net/wireless/realtek/rtw89/debug.c |  4 +-
 drivers/net/wireless/realtek/rtw89/phy.c   | 12 ++---
 drivers/net/wireless/realtek/rtw89/phy.h   |  2 +-
 drivers/net/wireless/realtek/rtw89/sar.c   | 58 +++++++++++-----------
 drivers/net/wireless/realtek/rtw89/sar.h   |  2 +-
 5 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
index d6016fa107fb..74a8e0976715 100644
--- a/drivers/net/wireless/realtek/rtw89/debug.c
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
@@ -941,13 +941,13 @@ ssize_t rtw89_debug_priv_txpwr_table_get(struct rtw89_dev *rtwdev,
 	p += rtw89_debug_priv_txpwr_table_get_regd(rtwdev, p, end - p, chan);
 
 	p += scnprintf(p, end - p, "[SAR]\n");
-	p += rtw89_print_sar(rtwdev, p, end - p, &sar_parm);
+	p += rtw89_print_sar(rtwdev, p, &sar_parm);
 
 	p += scnprintf(p, end - p, "[TAS]\n");
 	p += rtw89_print_tas(rtwdev, p, end - p);
 
 	p += scnprintf(p, end - p, "[DAG]\n");
-	p += rtw89_print_ant_gain(rtwdev, p, end - p, chan);
+	p += rtw89_print_ant_gain(rtwdev, p, chan);
 
 	tbl = dbgfs_txpwr_tables[chip_gen];
 	if (!tbl)
diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c
index a58aefb51fb5..1fa2c7a04bd7 100644
--- a/drivers/net/wireless/realtek/rtw89/phy.c
+++ b/drivers/net/wireless/realtek/rtw89/phy.c
@@ -2084,25 +2084,25 @@ s16 rtw89_phy_ant_gain_pwr_offset(struct rtw89_dev *rtwdev,
 }
 EXPORT_SYMBOL(rtw89_phy_ant_gain_pwr_offset);
 
-int rtw89_print_ant_gain(struct rtw89_dev *rtwdev, char *buf, size_t bufsz,
+int rtw89_print_ant_gain(struct rtw89_dev *rtwdev, char *buf,
 			 const struct rtw89_chan *chan)
 {
-	char *p = buf;
+	int len;
 	s8 offset_patha, offset_pathb;
 
 	if (!rtw89_can_apply_ant_gain(rtwdev, chan->band_type)) {
-		p += sysfs_emit(p, "no DAG is applied\n");
+		len = sysfs_emit(buf, "no DAG is applied\n");
 		goto out;
 	}
 
 	offset_patha = rtw89_phy_ant_gain_query(rtwdev, RF_PATH_A, chan->freq);
 	offset_pathb = rtw89_phy_ant_gain_query(rtwdev, RF_PATH_B, chan->freq);
 
-	p += sysfs_emit(p, "ChainA offset: %d dBm\n", offset_patha);
-	p += sysfs_emit(p, "ChainB offset: %d dBm\n", offset_pathb);
+	len = sysfs_emit(buf, "ChainA offset: %d dBm\n", offset_patha);
+	len += sysfs_emit_at(buf, len, "ChainB offset: %d dBm\n", offset_pathb);
 
 out:
-	return p - buf;
+	return len;
 }
 
 static const u8 rtw89_rs_idx_num_ax[] = {
diff --git a/drivers/net/wireless/realtek/rtw89/phy.h b/drivers/net/wireless/realtek/rtw89/phy.h
index 5b451f1cfaac..f5518f5bc668 100644
--- a/drivers/net/wireless/realtek/rtw89/phy.h
+++ b/drivers/net/wireless/realtek/rtw89/phy.h
@@ -836,7 +836,7 @@ s8 rtw89_phy_read_txpwr_byrate(struct rtw89_dev *rtwdev, u8 band, u8 bw,
 void rtw89_phy_ant_gain_init(struct rtw89_dev *rtwdev);
 s16 rtw89_phy_ant_gain_pwr_offset(struct rtw89_dev *rtwdev,
 				  const struct rtw89_chan *chan);
-int rtw89_print_ant_gain(struct rtw89_dev *rtwdev, char *buf, size_t bufsz,
+int rtw89_print_ant_gain(struct rtw89_dev *rtwdev, char *buf,
 			 const struct rtw89_chan *chan);
 void rtw89_phy_load_txpwr_byrate(struct rtw89_dev *rtwdev,
 				 const struct rtw89_txpwr_table *tbl);
diff --git a/drivers/net/wireless/realtek/rtw89/sar.c b/drivers/net/wireless/realtek/rtw89/sar.c
index 80eacada6911..14cefbe64124 100644
--- a/drivers/net/wireless/realtek/rtw89/sar.c
+++ b/drivers/net/wireless/realtek/rtw89/sar.c
@@ -311,14 +311,14 @@ s8 rtw89_query_sar(struct rtw89_dev *rtwdev, const struct rtw89_sar_parm *sar_pa
 }
 EXPORT_SYMBOL(rtw89_query_sar);
 
-int rtw89_print_sar(struct rtw89_dev *rtwdev, char *buf, size_t bufsz,
+int rtw89_print_sar(struct rtw89_dev *rtwdev, char *buf,
 		    const struct rtw89_sar_parm *sar_parm)
 {
 	const enum rtw89_sar_sources src = rtwdev->sar.src;
 	/* its members are protected by rtw89_sar_set_src() */
 	const struct rtw89_sar_handler *sar_hdl = &rtw89_sar_handlers[src];
 	const u8 fct_mac = rtwdev->chip->txpwr_factor_mac;
-	char *p = buf;
+	int len;
 	int ret;
 	s32 cfg;
 	u8 fct;
@@ -326,58 +326,58 @@ int rtw89_print_sar(struct rtw89_dev *rtwdev, char *buf, size_t bufsz,
 	lockdep_assert_wiphy(rtwdev->hw->wiphy);
 
 	if (src == RTW89_SAR_SOURCE_NONE) {
-		p += sysfs_emit(p, "no SAR is applied\n");
+		len = sysfs_emit(buf, "no SAR is applied\n");
 		goto out;
 	}
 
-	p += sysfs_emit(p, "source: %d (%s)\n", src,
-		       sar_hdl->descr_sar_source);
+	len = sysfs_emit(buf, "source: %d (%s)\n", src,
+			 sar_hdl->descr_sar_source);
 
 	ret = sar_hdl->query_sar_config(rtwdev, sar_parm, &cfg);
 	if (ret) {
-		p += sysfs_emit(p, "config: return code: %d\n", ret);
-		p += sysfs_emit(p,
-			       "assign: max setting: %d (unit: 1/%lu dBm)\n",
-			       RTW89_SAR_TXPWR_MAC_MAX, BIT(fct_mac));
+		len += sysfs_emit_at(buf, len, "config: return code: %d\n", ret);
+		len += sysfs_emit_at(buf, len,
+				"assign: max setting: %d (unit: 1/%lu dBm)\n",
+				RTW89_SAR_TXPWR_MAC_MAX, BIT(fct_mac));
 		goto out;
 	}
 
 	fct = sar_hdl->txpwr_factor_sar;
 
-	p += sysfs_emit(p, "config: %d (unit: 1/%lu dBm)\n", cfg,
-		       BIT(fct));
+	len += sysfs_emit_at(buf, len, "config: %d (unit: 1/%lu dBm)\n", cfg,
+			BIT(fct));
 
-	p += sysfs_emit(p, "support different configs by antenna: %s\n",
-		       str_yes_no(rtwdev->chip->support_sar_by_ant));
+	len += sysfs_emit_at(buf, len, "support different configs by antenna: %s\n",
+			str_yes_no(rtwdev->chip->support_sar_by_ant));
 out:
-	return p - buf;
+	return len;
 }
 
 int rtw89_print_tas(struct rtw89_dev *rtwdev, char *buf, size_t bufsz)
 {
 	struct rtw89_tas_info *tas = &rtwdev->tas;
-	char *p = buf;
+	int len;
 
 	if (!rtw89_tas_is_active(rtwdev)) {
-		p += sysfs_emit(p, "no TAS is applied\n");
+		len = sysfs_emit(buf, "no TAS is applied\n");
 		goto out;
 	}
 
-	p += sysfs_emit(p, "State: %s\n",
-		       rtw89_tas_state_str(tas->state));
-	p += sysfs_emit(p, "Average time: %d\n",
-		       tas->window_size * 2);
-	p += sysfs_emit(p, "SAR gap: %d dBm\n",
-		       RTW89_TAS_SAR_GAP >> RTW89_TAS_FACTOR);
-	p += sysfs_emit(p, "DPR gap: %d dBm\n",
-		       RTW89_TAS_DPR_GAP >> RTW89_TAS_FACTOR);
-	p += sysfs_emit(p, "DPR ON offset: %d dBm\n",
-		       RTW89_TAS_DPR_ON_OFFSET >> RTW89_TAS_FACTOR);
-	p += sysfs_emit(p, "DPR OFF offset: %d dBm\n",
-		       RTW89_TAS_DPR_OFF_OFFSET >> RTW89_TAS_FACTOR);
+	len = sysfs_emit(buf, "State: %s\n",
+			 rtw89_tas_state_str(tas->state));
+	len += sysfs_emit_at(buf, len, "Average time: %d\n",
+			tas->window_size * 2);
+	len += sysfs_emit_at(buf, len, "SAR gap: %d dBm\n",
+			RTW89_TAS_SAR_GAP >> RTW89_TAS_FACTOR);
+	len += sysfs_emit_at(buf, len, "DPR gap: %d dBm\n",
+			RTW89_TAS_DPR_GAP >> RTW89_TAS_FACTOR);
+	len += sysfs_emit_at(buf, len, "DPR ON offset: %d dBm\n",
+			RTW89_TAS_DPR_ON_OFFSET >> RTW89_TAS_FACTOR);
+	len += sysfs_emit_at(buf, len, "DPR OFF offset: %d dBm\n",
+			RTW89_TAS_DPR_OFF_OFFSET >> RTW89_TAS_FACTOR);
 
 out:
-	return p - buf;
+	return len;
 }
 
 static int rtw89_apply_sar_common(struct rtw89_dev *rtwdev,
diff --git a/drivers/net/wireless/realtek/rtw89/sar.h b/drivers/net/wireless/realtek/rtw89/sar.h
index 4b7f3d44f57b..b84277a3ea38 100644
--- a/drivers/net/wireless/realtek/rtw89/sar.h
+++ b/drivers/net/wireless/realtek/rtw89/sar.h
@@ -28,7 +28,7 @@ struct rtw89_sar_handler {
 extern const struct cfg80211_sar_capa rtw89_sar_capa;
 
 s8 rtw89_query_sar(struct rtw89_dev *rtwdev, const struct rtw89_sar_parm *sar_parm);
-int rtw89_print_sar(struct rtw89_dev *rtwdev, char *buf, size_t bufsz,
+int rtw89_print_sar(struct rtw89_dev *rtwdev, char *buf,
 		    const struct rtw89_sar_parm *sar_parm);
 int rtw89_print_tas(struct rtw89_dev *rtwdev, char *buf, size_t bufsz);
 int rtw89_ops_set_sar_specs(struct ieee80211_hw *hw,
-- 
2.43.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ