Linux-perf-users Archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 2/4] arch/x86/events/core: Convert sprintf/snprintf to sysfs_emit
       [not found] <20240126061319.245901-1-lizhijian@fujitsu.com>
@ 2024-01-26  6:13 ` Li Zhijian
  2024-02-07  8:10   ` Adrian Hunter
  2024-01-26  6:13 ` [PATCH v2 3/4] arch/x86/events/core: use scnprintf to print sub-string Li Zhijian
  2024-01-26  6:13 ` [PATCH v2 4/4] arch/x86/events/intel: Convert snprintf/sprintf to sysfs_emit Li Zhijian
  2 siblings, 1 reply; 6+ messages in thread
From: Li Zhijian @ 2024-01-26  6:13 UTC (permalink / raw
  To: linux-kernel
  Cc: Li Zhijian, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Adrian Hunter, Thomas Gleixner, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, linux-perf-users

Per filesystems/sysfs.rst, show() should only use sysfs_emit()
or sysfs_emit_at() when formatting the value to be returned to user space.

coccinelle complains that there are still a couple of functions that use
snprintf(). Convert them to sysfs_emit().

> ./arch/x86/events/core.c:1895:11-19: WARNING: please use sysfs_emit
                           ^^^^^ this one cannot convert to sysfs_emit
                                 where it intends to print a sub-string.

> ./arch/x86/events/core.c:2542:8-16: WARNING: please use sysfs_emit
> ./arch/x86/events/core.c:2600:8-16: WARNING: please use sysfs_emit

Most of this patch is generated by:
$ make coccicheck MODE=patch COCCI=scripts/coccinelle/api/device_attr_show.cocci M=arch/x86/events/core.c | sed -n '6,$p' | patch -p1

No functional change intended

CC: Peter Zijlstra <peterz@infradead.org>
CC: Ingo Molnar <mingo@redhat.com>
CC: Arnaldo Carvalho de Melo <acme@kernel.org>
CC: Mark Rutland <mark.rutland@arm.com>
CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
CC: Jiri Olsa <jolsa@kernel.org>
CC: Namhyung Kim <namhyung@kernel.org>
CC: Ian Rogers <irogers@google.com>
CC: Adrian Hunter <adrian.hunter@intel.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Borislav Petkov <bp@alien8.de>
CC: Dave Hansen <dave.hansen@linux.intel.com>
CC: x86@kernel.org
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: linux-perf-users@vger.kernel.org
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
V2:
- Address Adrian's comment:
  leave "snprintf(page, next_str - str + 1, "%s", str)" alone, it
  intends to print a sub-string, that cannot covert to sysfs_emit simply.
-
V2: extract patch from the patch set[1] so that maintainer accept it separately.
[1] https://lore.kernel.org/lkml/20240116041129.3937800-1-lizhijian@fujitsu.com/
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 arch/x86/events/core.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 09050641ce5d..20d963196e4c 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -1832,7 +1832,7 @@ ssize_t events_sysfs_show(struct device *dev, struct device_attribute *attr, cha
 
 	/* string trumps id */
 	if (pmu_attr->event_str)
-		return sprintf(page, "%s\n", pmu_attr->event_str);
+		return sysfs_emit(page, "%s\n", pmu_attr->event_str);
 
 	return x86_pmu.events_sysfs_show(page, config);
 }
@@ -1855,7 +1855,7 @@ ssize_t events_ht_sysfs_show(struct device *dev, struct device_attribute *attr,
 	 * if they are owned by some other guest.  The user tool
 	 * has to re-read when a thread sibling gets onlined later.
 	 */
-	return sprintf(page, "%s",
+	return sysfs_emit(page, "%s",
 			topology_max_smt_threads() > 1 ?
 			pmu_attr->event_str_ht :
 			pmu_attr->event_str_noht);
@@ -1872,7 +1872,7 @@ ssize_t events_hybrid_sysfs_show(struct device *dev,
 	int i;
 
 	if (hweight64(pmu_attr->pmu_type) == 1)
-		return sprintf(page, "%s", pmu_attr->event_str);
+		return sysfs_emit(page, "%s", pmu_attr->event_str);
 
 	/*
 	 * Hybrid PMUs may support the same event name, but with different
@@ -1894,7 +1894,7 @@ ssize_t events_hybrid_sysfs_show(struct device *dev,
 			if (next_str)
 				return snprintf(page, next_str - str + 1, "%s", str);
 			else
-				return sprintf(page, "%s", str);
+				return sysfs_emit(page, "%s", str);
 		}
 		str = strchr(str, ';');
 		str++;
@@ -2539,7 +2539,7 @@ static ssize_t get_attr_rdpmc(struct device *cdev,
 			      struct device_attribute *attr,
 			      char *buf)
 {
-	return snprintf(buf, 40, "%d\n", x86_pmu.attr_rdpmc);
+	return sysfs_emit(buf, "%d\n", x86_pmu.attr_rdpmc);
 }
 
 static ssize_t set_attr_rdpmc(struct device *cdev,
@@ -2597,7 +2597,7 @@ static ssize_t max_precise_show(struct device *cdev,
 				  struct device_attribute *attr,
 				  char *buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", x86_pmu_max_precise());
+	return sysfs_emit(buf, "%d\n", x86_pmu_max_precise());
 }
 
 static DEVICE_ATTR_RO(max_precise);
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/4] arch/x86/events/core: use scnprintf to print sub-string
       [not found] <20240126061319.245901-1-lizhijian@fujitsu.com>
  2024-01-26  6:13 ` [PATCH v2 2/4] arch/x86/events/core: Convert sprintf/snprintf to sysfs_emit Li Zhijian
@ 2024-01-26  6:13 ` Li Zhijian
  2024-02-07  8:11   ` Adrian Hunter
  2024-01-26  6:13 ` [PATCH v2 4/4] arch/x86/events/intel: Convert snprintf/sprintf to sysfs_emit Li Zhijian
  2 siblings, 1 reply; 6+ messages in thread
From: Li Zhijian @ 2024-01-26  6:13 UTC (permalink / raw
  To: linux-kernel
  Cc: Li Zhijian, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Adrian Hunter, Thomas Gleixner, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, linux-perf-users

sysfs_emit is not suitable to to print a substring, convert it to scnprintf
to make coccicheck happy.

CC: Peter Zijlstra <peterz@infradead.org>
CC: Ingo Molnar <mingo@redhat.com>
CC: Arnaldo Carvalho de Melo <acme@kernel.org>
CC: Mark Rutland <mark.rutland@arm.com>
CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
CC: Jiri Olsa <jolsa@kernel.org>
CC: Namhyung Kim <namhyung@kernel.org>
CC: Ian Rogers <irogers@google.com>
CC: Adrian Hunter <adrian.hunter@intel.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Borislav Petkov <bp@alien8.de>
CC: Dave Hansen <dave.hansen@linux.intel.com>
CC: x86@kernel.org
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: linux-perf-users@vger.kernel.org
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
V2: new patch address coccinelle warning
---
 arch/x86/events/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index 20d963196e4c..5ed2ba16c6c0 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -1892,7 +1892,7 @@ ssize_t events_hybrid_sysfs_show(struct device *dev,
 		if (x86_pmu.hybrid_pmu[i].pmu_type & pmu->pmu_type) {
 			next_str = strchr(str, ';');
 			if (next_str)
-				return snprintf(page, next_str - str + 1, "%s", str);
+				return scnprintf(page, next_str - str + 1, "%s", str);
 			else
 				return sysfs_emit(page, "%s", str);
 		}
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 4/4] arch/x86/events/intel: Convert snprintf/sprintf to sysfs_emit
       [not found] <20240126061319.245901-1-lizhijian@fujitsu.com>
  2024-01-26  6:13 ` [PATCH v2 2/4] arch/x86/events/core: Convert sprintf/snprintf to sysfs_emit Li Zhijian
  2024-01-26  6:13 ` [PATCH v2 3/4] arch/x86/events/core: use scnprintf to print sub-string Li Zhijian
@ 2024-01-26  6:13 ` Li Zhijian
  2024-02-07  8:12   ` Adrian Hunter
  2 siblings, 1 reply; 6+ messages in thread
From: Li Zhijian @ 2024-01-26  6:13 UTC (permalink / raw
  To: linux-kernel
  Cc: Li Zhijian, Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Adrian Hunter, Thomas Gleixner, Borislav Petkov,
	Dave Hansen, x86, H. Peter Anvin, linux-perf-users

Per filesystems/sysfs.rst, show() should only use sysfs_emit()
or sysfs_emit_at() when formatting the value to be returned to user space.

coccinelle complains that there are still a couple of functions that use
snprintf(). Convert them to sysfs_emit().

> ./arch/x86/events/intel/core.c:5614:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
> ./arch/x86/events/intel/core.c:5623:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
> ./arch/x86/events/intel/core.c:5605:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
> ./arch/x86/events/intel/core.c:5651:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
> ./arch/x86/events/intel/core.c:5571:8-16: WARNING: please use sysfs_emit or sysfs_emit_at

Most of this patch is generated by:
$ make coccicheck MODE=patch COCCI=scripts/coccinelle/api/device_attr_show.cocci M=arch/x86/events/intel | sed -n '6,$p' | patch -p1

No functional change intended

CC: Peter Zijlstra <peterz@infradead.org>
CC: Ingo Molnar <mingo@redhat.com>
CC: Arnaldo Carvalho de Melo <acme@kernel.org>
CC: Mark Rutland <mark.rutland@arm.com>
CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
CC: Jiri Olsa <jolsa@kernel.org>
CC: Namhyung Kim <namhyung@kernel.org>
CC: Ian Rogers <irogers@google.com>
CC: Adrian Hunter <adrian.hunter@intel.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Borislav Petkov <bp@alien8.de>
CC: Dave Hansen <dave.hansen@linux.intel.com>
CC: x86@kernel.org
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: linux-perf-users@vger.kernel.org
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
V2:
- Rebase to v6.8-rc1(Fix 2 newly introduced abused cases)
- Extract patch from the patch set[1] so that maintainer accept it separately.
 [1] https://lore.kernel.org/lkml/20240116041129.3937800-1-lizhijian@fujitsu.com/
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
---
 arch/x86/events/intel/core.c         | 12 ++++++------
 arch/x86/events/intel/pt.c           | 10 +++++-----
 arch/x86/events/intel/uncore.c       |  2 +-
 arch/x86/events/intel/uncore_snbep.c |  2 +-
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 3804f21ab049..7effb715dfaa 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -5517,7 +5517,7 @@ static ssize_t freeze_on_smi_show(struct device *cdev,
 				  struct device_attribute *attr,
 				  char *buf)
 {
-	return sprintf(buf, "%lu\n", x86_pmu.attr_freeze_on_smi);
+	return sysfs_emit(buf, "%lu\n", x86_pmu.attr_freeze_on_smi);
 }
 
 static DEFINE_MUTEX(freeze_on_smi_mutex);
@@ -5568,7 +5568,7 @@ static ssize_t show_sysctl_tfa(struct device *cdev,
 			      struct device_attribute *attr,
 			      char *buf)
 {
-	return snprintf(buf, 40, "%d\n", allow_tsx_force_abort);
+	return sysfs_emit(buf, "%d\n", allow_tsx_force_abort);
 }
 
 static ssize_t set_sysctl_tfa(struct device *cdev,
@@ -5602,7 +5602,7 @@ static ssize_t branches_show(struct device *cdev,
 			     struct device_attribute *attr,
 			     char *buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", x86_pmu.lbr_nr);
+	return sysfs_emit(buf, "%d\n", x86_pmu.lbr_nr);
 }
 
 static DEVICE_ATTR_RO(branches);
@@ -5611,7 +5611,7 @@ static ssize_t branch_counter_nr_show(struct device *cdev,
 				      struct device_attribute *attr,
 				      char *buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", fls(x86_pmu.lbr_counters));
+	return sysfs_emit(buf, "%d\n", fls(x86_pmu.lbr_counters));
 }
 
 static DEVICE_ATTR_RO(branch_counter_nr);
@@ -5620,7 +5620,7 @@ static ssize_t branch_counter_width_show(struct device *cdev,
 					 struct device_attribute *attr,
 					 char *buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%d\n", LBR_INFO_BR_CNTR_BITS);
+	return sysfs_emit(buf, "%d\n", LBR_INFO_BR_CNTR_BITS);
 }
 
 static DEVICE_ATTR_RO(branch_counter_width);
@@ -5648,7 +5648,7 @@ static ssize_t pmu_name_show(struct device *cdev,
 			     struct device_attribute *attr,
 			     char *buf)
 {
-	return snprintf(buf, PAGE_SIZE, "%s\n", pmu_name_str);
+	return sysfs_emit(buf, "%s\n", pmu_name_str);
 }
 
 static DEVICE_ATTR_RO(pmu_name);
diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
index 8e2a12235e62..178238d096cd 100644
--- a/arch/x86/events/intel/pt.c
+++ b/arch/x86/events/intel/pt.c
@@ -96,7 +96,7 @@ static ssize_t pt_cap_show(struct device *cdev,
 		container_of(attr, struct dev_ext_attribute, attr);
 	enum pt_capabilities cap = (long)ea->var;
 
-	return snprintf(buf, PAGE_SIZE, "%x\n", intel_pt_validate_hw_cap(cap));
+	return sysfs_emit(buf, "%x\n", intel_pt_validate_hw_cap(cap));
 }
 
 static struct attribute_group pt_cap_group __ro_after_init = {
@@ -150,11 +150,11 @@ pt_timing_attr_show(struct device *dev, struct device_attribute *attr,
 
 	switch (pmu_attr->id) {
 	case 0:
-		return sprintf(page, "%lu\n", pt_pmu.max_nonturbo_ratio);
+		return sysfs_emit(page, "%lu\n", pt_pmu.max_nonturbo_ratio);
 	case 1:
-		return sprintf(page, "%u:%u\n",
-			       pt_pmu.tsc_art_num,
-			       pt_pmu.tsc_art_den);
+		return sysfs_emit(page, "%u:%u\n",
+				  pt_pmu.tsc_art_num,
+				  pt_pmu.tsc_art_den);
 	default:
 		break;
 	}
diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index 7927c0b832fa..b6bb3aa286fe 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -131,7 +131,7 @@ ssize_t uncore_event_show(struct device *dev,
 {
 	struct uncore_event_desc *event =
 		container_of(attr, struct uncore_event_desc, attr);
-	return sprintf(buf, "%s", event->config);
+	return sysfs_emit(buf, "%s", event->config);
 }
 
 struct intel_uncore_box *uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu)
diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index a96496bef678..553ba9422677 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -3754,7 +3754,7 @@ static ssize_t skx_iio_mapping_show(struct device *dev,
 	long die = (long)ea->var;
 	struct intel_uncore_topology *pmut = pmu_topology(pmu, die);
 
-	return sprintf(buf, "%04x:%02x\n", pmut ? pmut->iio->segment : 0,
+	return sysfs_emit(buf, "%04x:%02x\n", pmut ? pmut->iio->segment : 0,
 					   pmut ? pmut->iio->pci_bus_no : 0);
 }
 
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/4] arch/x86/events/core: Convert sprintf/snprintf to sysfs_emit
  2024-01-26  6:13 ` [PATCH v2 2/4] arch/x86/events/core: Convert sprintf/snprintf to sysfs_emit Li Zhijian
@ 2024-02-07  8:10   ` Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2024-02-07  8:10 UTC (permalink / raw
  To: Li Zhijian, linux-kernel
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Thomas Gleixner, Borislav Petkov, Dave Hansen, x86,
	H. Peter Anvin, linux-perf-users

On 26/01/24 08:13, Li Zhijian wrote:
> Per filesystems/sysfs.rst, show() should only use sysfs_emit()
> or sysfs_emit_at() when formatting the value to be returned to user space.
> 
> coccinelle complains that there are still a couple of functions that use
> snprintf(). Convert them to sysfs_emit().
> 
>> ./arch/x86/events/core.c:1895:11-19: WARNING: please use sysfs_emit
>                            ^^^^^ this one cannot convert to sysfs_emit
>                                  where it intends to print a sub-string.
> 
>> ./arch/x86/events/core.c:2542:8-16: WARNING: please use sysfs_emit
>> ./arch/x86/events/core.c:2600:8-16: WARNING: please use sysfs_emit
> 
> Most of this patch is generated by:
> $ make coccicheck MODE=patch COCCI=scripts/coccinelle/api/device_attr_show.cocci M=arch/x86/events/core.c | sed -n '6,$p' | patch -p1
> 
> No functional change intended
> 
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: Ingo Molnar <mingo@redhat.com>
> CC: Arnaldo Carvalho de Melo <acme@kernel.org>
> CC: Mark Rutland <mark.rutland@arm.com>
> CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> CC: Jiri Olsa <jolsa@kernel.org>
> CC: Namhyung Kim <namhyung@kernel.org>
> CC: Ian Rogers <irogers@google.com>
> CC: Adrian Hunter <adrian.hunter@intel.com>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: Borislav Petkov <bp@alien8.de>
> CC: Dave Hansen <dave.hansen@linux.intel.com>
> CC: x86@kernel.org
> CC: "H. Peter Anvin" <hpa@zytor.com>
> CC: linux-perf-users@vger.kernel.org
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>

Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>

> ---
> V2:
> - Address Adrian's comment:
>   leave "snprintf(page, next_str - str + 1, "%s", str)" alone, it
>   intends to print a sub-string, that cannot covert to sysfs_emit simply.
> -
> V2: extract patch from the patch set[1] so that maintainer accept it separately.
> [1] https://lore.kernel.org/lkml/20240116041129.3937800-1-lizhijian@fujitsu.com/
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
> ---
>  arch/x86/events/core.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
> index 09050641ce5d..20d963196e4c 100644
> --- a/arch/x86/events/core.c
> +++ b/arch/x86/events/core.c
> @@ -1832,7 +1832,7 @@ ssize_t events_sysfs_show(struct device *dev, struct device_attribute *attr, cha
>  
>  	/* string trumps id */
>  	if (pmu_attr->event_str)
> -		return sprintf(page, "%s\n", pmu_attr->event_str);
> +		return sysfs_emit(page, "%s\n", pmu_attr->event_str);
>  
>  	return x86_pmu.events_sysfs_show(page, config);
>  }
> @@ -1855,7 +1855,7 @@ ssize_t events_ht_sysfs_show(struct device *dev, struct device_attribute *attr,
>  	 * if they are owned by some other guest.  The user tool
>  	 * has to re-read when a thread sibling gets onlined later.
>  	 */
> -	return sprintf(page, "%s",
> +	return sysfs_emit(page, "%s",
>  			topology_max_smt_threads() > 1 ?
>  			pmu_attr->event_str_ht :
>  			pmu_attr->event_str_noht);
> @@ -1872,7 +1872,7 @@ ssize_t events_hybrid_sysfs_show(struct device *dev,
>  	int i;
>  
>  	if (hweight64(pmu_attr->pmu_type) == 1)
> -		return sprintf(page, "%s", pmu_attr->event_str);
> +		return sysfs_emit(page, "%s", pmu_attr->event_str);
>  
>  	/*
>  	 * Hybrid PMUs may support the same event name, but with different
> @@ -1894,7 +1894,7 @@ ssize_t events_hybrid_sysfs_show(struct device *dev,
>  			if (next_str)
>  				return snprintf(page, next_str - str + 1, "%s", str);
>  			else
> -				return sprintf(page, "%s", str);
> +				return sysfs_emit(page, "%s", str);
>  		}
>  		str = strchr(str, ';');
>  		str++;
> @@ -2539,7 +2539,7 @@ static ssize_t get_attr_rdpmc(struct device *cdev,
>  			      struct device_attribute *attr,
>  			      char *buf)
>  {
> -	return snprintf(buf, 40, "%d\n", x86_pmu.attr_rdpmc);
> +	return sysfs_emit(buf, "%d\n", x86_pmu.attr_rdpmc);
>  }
>  
>  static ssize_t set_attr_rdpmc(struct device *cdev,
> @@ -2597,7 +2597,7 @@ static ssize_t max_precise_show(struct device *cdev,
>  				  struct device_attribute *attr,
>  				  char *buf)
>  {
> -	return snprintf(buf, PAGE_SIZE, "%d\n", x86_pmu_max_precise());
> +	return sysfs_emit(buf, "%d\n", x86_pmu_max_precise());
>  }
>  
>  static DEVICE_ATTR_RO(max_precise);


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 3/4] arch/x86/events/core: use scnprintf to print sub-string
  2024-01-26  6:13 ` [PATCH v2 3/4] arch/x86/events/core: use scnprintf to print sub-string Li Zhijian
@ 2024-02-07  8:11   ` Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2024-02-07  8:11 UTC (permalink / raw
  To: Li Zhijian, linux-kernel
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Thomas Gleixner, Borislav Petkov, Dave Hansen, x86,
	H. Peter Anvin, linux-perf-users

On 26/01/24 08:13, Li Zhijian wrote:
> sysfs_emit is not suitable to to print a substring, convert it to scnprintf

'to to' -> 'to'

> to make coccicheck happy.
> 
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: Ingo Molnar <mingo@redhat.com>
> CC: Arnaldo Carvalho de Melo <acme@kernel.org>
> CC: Mark Rutland <mark.rutland@arm.com>
> CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> CC: Jiri Olsa <jolsa@kernel.org>
> CC: Namhyung Kim <namhyung@kernel.org>
> CC: Ian Rogers <irogers@google.com>
> CC: Adrian Hunter <adrian.hunter@intel.com>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: Borislav Petkov <bp@alien8.de>
> CC: Dave Hansen <dave.hansen@linux.intel.com>
> CC: x86@kernel.org
> CC: "H. Peter Anvin" <hpa@zytor.com>
> CC: linux-perf-users@vger.kernel.org
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>

Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>

> ---
> V2: new patch address coccinelle warning
> ---
>  arch/x86/events/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
> index 20d963196e4c..5ed2ba16c6c0 100644
> --- a/arch/x86/events/core.c
> +++ b/arch/x86/events/core.c
> @@ -1892,7 +1892,7 @@ ssize_t events_hybrid_sysfs_show(struct device *dev,
>  		if (x86_pmu.hybrid_pmu[i].pmu_type & pmu->pmu_type) {
>  			next_str = strchr(str, ';');
>  			if (next_str)
> -				return snprintf(page, next_str - str + 1, "%s", str);
> +				return scnprintf(page, next_str - str + 1, "%s", str);
>  			else
>  				return sysfs_emit(page, "%s", str);
>  		}


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 4/4] arch/x86/events/intel: Convert snprintf/sprintf to sysfs_emit
  2024-01-26  6:13 ` [PATCH v2 4/4] arch/x86/events/intel: Convert snprintf/sprintf to sysfs_emit Li Zhijian
@ 2024-02-07  8:12   ` Adrian Hunter
  0 siblings, 0 replies; 6+ messages in thread
From: Adrian Hunter @ 2024-02-07  8:12 UTC (permalink / raw
  To: Li Zhijian, linux-kernel
  Cc: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
	Mark Rutland, Alexander Shishkin, Jiri Olsa, Namhyung Kim,
	Ian Rogers, Thomas Gleixner, Borislav Petkov, Dave Hansen, x86,
	H. Peter Anvin, linux-perf-users

On 26/01/24 08:13, Li Zhijian wrote:
> Per filesystems/sysfs.rst, show() should only use sysfs_emit()
> or sysfs_emit_at() when formatting the value to be returned to user space.
> 
> coccinelle complains that there are still a couple of functions that use
> snprintf(). Convert them to sysfs_emit().
> 
>> ./arch/x86/events/intel/core.c:5614:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
>> ./arch/x86/events/intel/core.c:5623:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
>> ./arch/x86/events/intel/core.c:5605:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
>> ./arch/x86/events/intel/core.c:5651:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
>> ./arch/x86/events/intel/core.c:5571:8-16: WARNING: please use sysfs_emit or sysfs_emit_at
> 
> Most of this patch is generated by:
> $ make coccicheck MODE=patch COCCI=scripts/coccinelle/api/device_attr_show.cocci M=arch/x86/events/intel | sed -n '6,$p' | patch -p1
> 
> No functional change intended
> 
> CC: Peter Zijlstra <peterz@infradead.org>
> CC: Ingo Molnar <mingo@redhat.com>
> CC: Arnaldo Carvalho de Melo <acme@kernel.org>
> CC: Mark Rutland <mark.rutland@arm.com>
> CC: Alexander Shishkin <alexander.shishkin@linux.intel.com>
> CC: Jiri Olsa <jolsa@kernel.org>
> CC: Namhyung Kim <namhyung@kernel.org>
> CC: Ian Rogers <irogers@google.com>
> CC: Adrian Hunter <adrian.hunter@intel.com>
> CC: Thomas Gleixner <tglx@linutronix.de>
> CC: Borislav Petkov <bp@alien8.de>
> CC: Dave Hansen <dave.hansen@linux.intel.com>
> CC: x86@kernel.org
> CC: "H. Peter Anvin" <hpa@zytor.com>
> CC: linux-perf-users@vger.kernel.org
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>

Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>

> ---
> V2:
> - Rebase to v6.8-rc1(Fix 2 newly introduced abused cases)
> - Extract patch from the patch set[1] so that maintainer accept it separately.
>  [1] https://lore.kernel.org/lkml/20240116041129.3937800-1-lizhijian@fujitsu.com/
> Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
> ---
>  arch/x86/events/intel/core.c         | 12 ++++++------
>  arch/x86/events/intel/pt.c           | 10 +++++-----
>  arch/x86/events/intel/uncore.c       |  2 +-
>  arch/x86/events/intel/uncore_snbep.c |  2 +-
>  4 files changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
> index 3804f21ab049..7effb715dfaa 100644
> --- a/arch/x86/events/intel/core.c
> +++ b/arch/x86/events/intel/core.c
> @@ -5517,7 +5517,7 @@ static ssize_t freeze_on_smi_show(struct device *cdev,
>  				  struct device_attribute *attr,
>  				  char *buf)
>  {
> -	return sprintf(buf, "%lu\n", x86_pmu.attr_freeze_on_smi);
> +	return sysfs_emit(buf, "%lu\n", x86_pmu.attr_freeze_on_smi);
>  }
>  
>  static DEFINE_MUTEX(freeze_on_smi_mutex);
> @@ -5568,7 +5568,7 @@ static ssize_t show_sysctl_tfa(struct device *cdev,
>  			      struct device_attribute *attr,
>  			      char *buf)
>  {
> -	return snprintf(buf, 40, "%d\n", allow_tsx_force_abort);
> +	return sysfs_emit(buf, "%d\n", allow_tsx_force_abort);
>  }
>  
>  static ssize_t set_sysctl_tfa(struct device *cdev,
> @@ -5602,7 +5602,7 @@ static ssize_t branches_show(struct device *cdev,
>  			     struct device_attribute *attr,
>  			     char *buf)
>  {
> -	return snprintf(buf, PAGE_SIZE, "%d\n", x86_pmu.lbr_nr);
> +	return sysfs_emit(buf, "%d\n", x86_pmu.lbr_nr);
>  }
>  
>  static DEVICE_ATTR_RO(branches);
> @@ -5611,7 +5611,7 @@ static ssize_t branch_counter_nr_show(struct device *cdev,
>  				      struct device_attribute *attr,
>  				      char *buf)
>  {
> -	return snprintf(buf, PAGE_SIZE, "%d\n", fls(x86_pmu.lbr_counters));
> +	return sysfs_emit(buf, "%d\n", fls(x86_pmu.lbr_counters));
>  }
>  
>  static DEVICE_ATTR_RO(branch_counter_nr);
> @@ -5620,7 +5620,7 @@ static ssize_t branch_counter_width_show(struct device *cdev,
>  					 struct device_attribute *attr,
>  					 char *buf)
>  {
> -	return snprintf(buf, PAGE_SIZE, "%d\n", LBR_INFO_BR_CNTR_BITS);
> +	return sysfs_emit(buf, "%d\n", LBR_INFO_BR_CNTR_BITS);
>  }
>  
>  static DEVICE_ATTR_RO(branch_counter_width);
> @@ -5648,7 +5648,7 @@ static ssize_t pmu_name_show(struct device *cdev,
>  			     struct device_attribute *attr,
>  			     char *buf)
>  {
> -	return snprintf(buf, PAGE_SIZE, "%s\n", pmu_name_str);
> +	return sysfs_emit(buf, "%s\n", pmu_name_str);
>  }
>  
>  static DEVICE_ATTR_RO(pmu_name);
> diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c
> index 8e2a12235e62..178238d096cd 100644
> --- a/arch/x86/events/intel/pt.c
> +++ b/arch/x86/events/intel/pt.c
> @@ -96,7 +96,7 @@ static ssize_t pt_cap_show(struct device *cdev,
>  		container_of(attr, struct dev_ext_attribute, attr);
>  	enum pt_capabilities cap = (long)ea->var;
>  
> -	return snprintf(buf, PAGE_SIZE, "%x\n", intel_pt_validate_hw_cap(cap));
> +	return sysfs_emit(buf, "%x\n", intel_pt_validate_hw_cap(cap));
>  }
>  
>  static struct attribute_group pt_cap_group __ro_after_init = {
> @@ -150,11 +150,11 @@ pt_timing_attr_show(struct device *dev, struct device_attribute *attr,
>  
>  	switch (pmu_attr->id) {
>  	case 0:
> -		return sprintf(page, "%lu\n", pt_pmu.max_nonturbo_ratio);
> +		return sysfs_emit(page, "%lu\n", pt_pmu.max_nonturbo_ratio);
>  	case 1:
> -		return sprintf(page, "%u:%u\n",
> -			       pt_pmu.tsc_art_num,
> -			       pt_pmu.tsc_art_den);
> +		return sysfs_emit(page, "%u:%u\n",
> +				  pt_pmu.tsc_art_num,
> +				  pt_pmu.tsc_art_den);
>  	default:
>  		break;
>  	}
> diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
> index 7927c0b832fa..b6bb3aa286fe 100644
> --- a/arch/x86/events/intel/uncore.c
> +++ b/arch/x86/events/intel/uncore.c
> @@ -131,7 +131,7 @@ ssize_t uncore_event_show(struct device *dev,
>  {
>  	struct uncore_event_desc *event =
>  		container_of(attr, struct uncore_event_desc, attr);
> -	return sprintf(buf, "%s", event->config);
> +	return sysfs_emit(buf, "%s", event->config);
>  }
>  
>  struct intel_uncore_box *uncore_pmu_to_box(struct intel_uncore_pmu *pmu, int cpu)
> diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
> index a96496bef678..553ba9422677 100644
> --- a/arch/x86/events/intel/uncore_snbep.c
> +++ b/arch/x86/events/intel/uncore_snbep.c
> @@ -3754,7 +3754,7 @@ static ssize_t skx_iio_mapping_show(struct device *dev,
>  	long die = (long)ea->var;
>  	struct intel_uncore_topology *pmut = pmu_topology(pmu, die);
>  
> -	return sprintf(buf, "%04x:%02x\n", pmut ? pmut->iio->segment : 0,
> +	return sysfs_emit(buf, "%04x:%02x\n", pmut ? pmut->iio->segment : 0,
>  					   pmut ? pmut->iio->pci_bus_no : 0);
>  }
>  


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-02-07  8:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20240126061319.245901-1-lizhijian@fujitsu.com>
2024-01-26  6:13 ` [PATCH v2 2/4] arch/x86/events/core: Convert sprintf/snprintf to sysfs_emit Li Zhijian
2024-02-07  8:10   ` Adrian Hunter
2024-01-26  6:13 ` [PATCH v2 3/4] arch/x86/events/core: use scnprintf to print sub-string Li Zhijian
2024-02-07  8:11   ` Adrian Hunter
2024-01-26  6:13 ` [PATCH v2 4/4] arch/x86/events/intel: Convert snprintf/sprintf to sysfs_emit Li Zhijian
2024-02-07  8:12   ` Adrian Hunter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).