Netdev List
 help / color / mirror / Atom feed
* [PATCH] tools: Use fputc() calls in some functions
@ 2026-07-23 10:25 Markus Elfring
  2026-07-23 13:47 ` Andi Kleen
  2026-07-23 15:07 ` bot+bpf-ci
  0 siblings, 2 replies; 5+ messages in thread
From: Markus Elfring @ 2026-07-23 10:25 UTC (permalink / raw)
  To: acpica-devel, bpf, coresight, kvm, linux-acpi, linux-arm-kernel,
	linux-gpio, linux-kselftest, linux-mm, linux-perf-users, linux-pm,
	linux-trace-kernel, linuxppc-dev, mptcp, netdev,
	platform-driver-x86, virtualization, Adrian Hunter, Alex Mastro,
	Alex Williamson, Alexander Shishkin, Alexei Starovoitov,
	Andi Kleen, Andrew Lunn, Andrew Morton, Andrii Nakryiko,
	Ankur Arora, Arnaldo Carvalho de Melo, Bartosz Golaszewski,
	Bobby Eshleman, Christian Bornträger, Christophe Leroy,
	Chun-Tse Shao, Claudio Imbrenda, Costa Shulyupin, Crystal Wood,
	Daniel Borkmann, Daniel Lezcano, David Hildenbrand, David Matlack,
	David S. Miller, Donald Hunter, Eduard Zingerman, Emil Tsalapatis,
	Eric Dumazet, Gabriele Monaco, Geliang Tang, Ian Rogers,
	Ingo Molnar, Ivan Pravdin, Jakub Kicinski, James Clark,
	Janosch Frank, Jason Xing, Jiri Olsa, Joe Damato, John Garry,
	Josh Poimboeuf, Kaushlendra Kumar, Kent Gibson,
	Kumar Kartikeya Dwivedi, Len Brown, Leo Yan, Lukasz Luba,
	Madhavan Srinivasan, Mark Rutland, Martin KaFai Lau,
	Masami Hiramatsu, Mat Martineau, Matthieu Baerts,
	Michael Ellerman, Mike Leach, Mina Almasry, Mykyta Yatsenko,
	Nam Cao, Namhyung Kim, Nicholas Piggin, Paolo Abeni,
	Paolo Bonzini, Pawel Chmielewski, Peter Zijlstra, Quentin Monnet,
	Rafael J. Wysocki, Raghavendra Rao Ananta, Saket Dumbre,
	Shuah Khan, Simon Horman, Song Liu, Srinivas Pandruvada,
	Stanislav Fomichev, Stefano Garzarella, Steven Rostedt,
	Suzuki K Poulose, Swapnil Sapkal, Thomas Weißschuh,
	Tomas Glozar, Vipin Sharma, Wander Lairson Costa, Will Deacon,
	Willem de Bruijn, Willy Tarreau, Yonghong Song, Zhang Chujun,
	Zhang Rui
  Cc: LKML, kernel-janitors

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 23 Jul 2026 11:13:30 +0200
Subject: [PATCH] tools: Use fputc() calls in some functions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Single characters should occasionally be transferred into the output.
Thus use the corresponding function “fputc” (or even “putchar”).

The source code was transformed by using the Coccinelle software.

See also:
Improving output for single characters (with SmPL)?
https://lore.kernel.org/kernel-janitors/202dfb21-f5a2-4550-8a1f-aa07d84db345@web.de/

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 tools/bpf/bpftool/common.c                         |  4 ++--
 tools/bpf/bpftool/main.c                           |  2 +-
 tools/bpf/bpftool/netlink_dumper.h                 |  6 +++---
 tools/bpf/bpftool/prog.c                           |  2 +-
 tools/gpio/gpio-event-mon.c                        |  2 +-
 tools/gpio/gpio-hammer.c                           |  4 ++--
 tools/gpio/lsgpio.c                                |  4 ++--
 tools/include/nolibc/err.h                         |  2 +-
 tools/mm/page_owner_sort.c                         |  2 +-
 tools/net/ynl/ynltool/main.c                       |  4 ++--
 tools/objtool/builtin-check.c                      |  2 +-
 tools/objtool/disas.c                              |  2 +-
 tools/perf/builtin-c2c.c                           | 10 +++++-----
 tools/perf/builtin-daemon.c                        |  4 ++--
 tools/perf/builtin-lock.c                          | 14 +++++++-------
 tools/perf/builtin-script.c                        |  8 ++++----
 tools/perf/ui/gtk/util.c                           |  6 +++---
 tools/perf/ui/stdio/hist.c                         |  8 ++++----
 tools/perf/util/cs-etm.c                           |  2 +-
 tools/perf/util/debug.c                            |  2 +-
 tools/perf/util/header.c                           |  6 +++---
 tools/perf/util/intel-pt-decoder/intel-pt-log.c    |  8 ++++----
 tools/perf/util/libbfd.c                           |  2 +-
 tools/perf/util/session.c                          |  4 ++--
 tools/perf/util/stat-display.c                     | 12 ++++++------
 tools/perf/util/values.c                           |  4 ++--
 tools/power/acpi/tools/acpidump/apdump.c           |  2 +-
 tools/power/x86/intel-speed-select/isst-display.c  |  6 +++---
 tools/power/x86/turbostat/turbostat.c              |  4 ++--
 .../testing/selftests/bpf/benchs/bench_htab_mem.c  |  2 +-
 tools/testing/selftests/bpf/jit_disasm_helpers.c   |  2 +-
 tools/testing/selftests/bpf/test_progs.c           | 12 ++++++------
 tools/testing/selftests/bpf/veristat.c             |  2 +-
 tools/testing/selftests/drivers/net/hw/ncdevmem.c  |  2 +-
 tools/testing/selftests/kvm/s390/keyop.c           |  2 +-
 tools/testing/selftests/net/mptcp/pm_nl_ctl.c      |  2 +-
 tools/testing/selftests/net/psock_tpacket.c        |  4 ++--
 tools/testing/selftests/net/txtimestamp.c          | 10 +++++-----
 .../testing/selftests/powerpc/nx-gzip/gunz_test.c  |  2 +-
 .../selftests/vfio/lib/include/libvfio/assert.h    |  2 +-
 tools/testing/selftests/vfio/lib/libvfio.c         | 10 +++++-----
 tools/testing/vsock/vsock_diag_test.c              |  4 ++--
 tools/thermal/tmon/sysfs.c                         |  2 +-
 tools/thermal/tmon/tmon.c                          |  2 +-
 tools/tracing/latency/latency-collector.c          |  2 +-
 tools/tracing/rtla/src/common.c                    |  2 +-
 tools/tracing/rtla/src/utils.c                     |  2 +-
 tools/usb/ffs-test.c                               |  2 +-
 tools/verification/rv/src/in_kernel.c              |  2 +-
 49 files changed, 104 insertions(+), 104 deletions(-)

diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
index ef366ccc9650..3133058cfe40 100644
--- a/tools/bpf/bpftool/common.c
+++ b/tools/bpf/bpftool/common.c
@@ -53,7 +53,7 @@ void p_err(const char *fmt, ...)
 	} else {
 		fprintf(stderr, "Error: ");
 		vfprintf(stderr, fmt, ap);
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 	}
 	va_end(ap);
 }
@@ -67,7 +67,7 @@ void p_info(const char *fmt, ...)
 
 	va_start(ap, fmt);
 	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	va_end(ap);
 }
 
diff --git a/tools/bpf/bpftool/main.c b/tools/bpf/bpftool/main.c
index c91e1a6e1a1e..aecfc778625f 100644
--- a/tools/bpf/bpftool/main.c
+++ b/tools/bpf/bpftool/main.c
@@ -273,7 +273,7 @@ void fprint_hex(FILE *f, void *arg, unsigned int n, const char *sep)
 		if (!i)
 			/* nothing */;
 		else if (!(i % 16))
-			fprintf(f, "\n");
+			fputc(f, '\n');
 		else if (!(i % 8))
 			fprintf(f, "  ");
 		else
diff --git a/tools/bpf/bpftool/netlink_dumper.h b/tools/bpf/bpftool/netlink_dumper.h
index 96318106fb49..bf0919b4f52a 100644
--- a/tools/bpf/bpftool/netlink_dumper.h
+++ b/tools/bpf/bpftool/netlink_dumper.h
@@ -25,7 +25,7 @@
 	if (json_output)				\
 		jsonw_start_object(json_wtr);		\
 	else						\
-		fprintf(stdout, "{");			\
+		putchar('{');				\
 }
 
 #define NET_END_OBJECT_NESTED				\
@@ -33,7 +33,7 @@
 	if (json_output)				\
 		jsonw_end_object(json_wtr);		\
 	else						\
-		fprintf(stdout, "}");			\
+		putchar('}');				\
 }
 
 #define NET_END_OBJECT					\
@@ -47,7 +47,7 @@
 	if (json_output)				\
 		jsonw_end_object(json_wtr);		\
 	else						\
-		fprintf(stdout, "\n");			\
+		putchar('\n');				\
 }
 
 #define NET_START_ARRAY(name, fmt_str)			\
diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c
index a9f730d407a9..d27cb9d49860 100644
--- a/tools/bpf/bpftool/prog.c
+++ b/tools/bpf/bpftool/prog.c
@@ -1266,7 +1266,7 @@ static void hex_print(void *data, unsigned int size, FILE *f)
 			fprintf(f, "%c%s", c, j == i + 7 ? " " : "");
 		}
 
-		fprintf(f, "\n");
+		fputc(f, '\n');
 	}
 }
 
diff --git a/tools/gpio/gpio-event-mon.c b/tools/gpio/gpio-event-mon.c
index b70813b0bf8e..e12e14780c0e 100644
--- a/tools/gpio/gpio-event-mon.c
+++ b/tools/gpio/gpio-event-mon.c
@@ -121,7 +121,7 @@ int monitor_device(const char *device_name,
 		default:
 			fprintf(stdout, "unknown event");
 		}
-		fprintf(stdout, "\n");
+		putchar('\n');
 
 		i++;
 		if (i == loops)
diff --git a/tools/gpio/gpio-hammer.c b/tools/gpio/gpio-hammer.c
index ba0866eb3581..b76c94fee04d 100644
--- a/tools/gpio/gpio-hammer.c
+++ b/tools/gpio/gpio-hammer.c
@@ -87,7 +87,7 @@ int hammer_device(const char *device_name, unsigned int *lines, int num_lines,
 		if (j == sizeof(swirr) - 1)
 			j = 0;
 
-		fprintf(stdout, "[");
+		putchar('[');
 		for (i = 0; i < num_lines; i++) {
 			fprintf(stdout, "%u: %d", lines[i],
 				gpiotools_test_bit(values.bits, i));
@@ -101,7 +101,7 @@ int hammer_device(const char *device_name, unsigned int *lines, int num_lines,
 		if (loops && iteration == loops)
 			break;
 	}
-	fprintf(stdout, "\n");
+	putchar('\n');
 	ret = 0;
 
 exit_close_error:
diff --git a/tools/gpio/lsgpio.c b/tools/gpio/lsgpio.c
index 52a0be45410c..abb2c6fbc3d7 100644
--- a/tools/gpio/lsgpio.c
+++ b/tools/gpio/lsgpio.c
@@ -152,9 +152,9 @@ int list_device(const char *device_name)
 		if (linfo.flags) {
 			fprintf(stdout, " [");
 			print_attributes(&linfo);
-			fprintf(stdout, "]");
+			putchar(']');
 		}
-		fprintf(stdout, "\n");
+		putchar('\n');
 
 	}
 
diff --git a/tools/include/nolibc/err.h b/tools/include/nolibc/err.h
index e22ae87a7289..89c9a3d3bc77 100644
--- a/tools/include/nolibc/err.h
+++ b/tools/include/nolibc/err.h
@@ -27,7 +27,7 @@ void vwarnx(const char *fmt, va_list args)
 {
 	fprintf(stderr, "%s: ", program_invocation_short_name);
 	vfprintf(stderr, fmt, args);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 
 static __attribute__((unused))
diff --git a/tools/mm/page_owner_sort.c b/tools/mm/page_owner_sort.c
index 35d3d254941c..0293a838211e 100644
--- a/tools/mm/page_owner_sort.c
+++ b/tools/mm/page_owner_sort.c
@@ -917,7 +917,7 @@ int main(int argc, char **argv)
 			}
 			if (cull & CULL_STACKTRACE)
 				fprintf(fout, ":\n%s", list[i].stacktrace);
-			fprintf(fout, "\n");
+			fputc(fout, '\n');
 		}
 	}
 
diff --git a/tools/net/ynl/ynltool/main.c b/tools/net/ynl/ynltool/main.c
index 5d0f428eed0a..245d7f58c8fb 100644
--- a/tools/net/ynl/ynltool/main.c
+++ b/tools/net/ynl/ynltool/main.c
@@ -156,7 +156,7 @@ void p_err(const char *fmt, ...)
 	} else {
 		fprintf(stderr, "Error: ");
 		vfprintf(stderr, fmt, ap);
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 	}
 	va_end(ap);
 }
@@ -170,7 +170,7 @@ void p_info(const char *fmt, ...)
 
 	va_start(ap, fmt);
 	vfprintf(stderr, fmt, ap);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	va_end(ap);
 }
 
diff --git a/tools/objtool/builtin-check.c b/tools/objtool/builtin-check.c
index 118c3de2f293..b6d27d326b8a 100644
--- a/tools/objtool/builtin-check.c
+++ b/tools/objtool/builtin-check.c
@@ -297,7 +297,7 @@ int make_backup(void)
 			fprintf(stderr, " %s", arg);
 	}
 
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	return 0;
 }
 
diff --git a/tools/objtool/disas.c b/tools/objtool/disas.c
index e6a54a83605c..339d1d5690c4 100644
--- a/tools/objtool/disas.c
+++ b/tools/objtool/disas.c
@@ -537,7 +537,7 @@ void disas_print_insn(FILE *stream, struct disas_context *dctx,
 		return;
 
 	if (strcmp(format, "\n") == 0) {
-		fprintf(stream, "\n");
+		fputc(stream, '\n');
 		return;
 	}
 
diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c
index c9584dbedf77..fc9b6b18eded 100644
--- a/tools/perf/builtin-c2c.c
+++ b/tools/perf/builtin-c2c.c
@@ -2511,7 +2511,7 @@ static void print_cacheline(struct c2c_hists *c2c_hists,
 		hists__fprintf_headers(&c2c_hists->hists, out);
 		once = true;
 	} else {
-		fprintf(out, "\n");
+		fputc(out, '\n');
 	}
 
 	fprintf(out, "  ----------------------------------------------------------------------\n");
@@ -2590,15 +2590,15 @@ static void perf_c2c__hists_fprintf(FILE *out, struct perf_session *session)
 	setup_pager();
 
 	print_c2c__display_stats(out);
-	fprintf(out, "\n");
+	fputc(out, '\n');
 	print_shared_cacheline_info(out);
-	fprintf(out, "\n");
+	fputc(out, '\n');
 	print_c2c_info(out, session);
 
 	if (c2c.stats_only)
 		return;
 
-	fprintf(out, "\n");
+	fputc(out, '\n');
 	fprintf(out, "=================================================\n");
 	fprintf(out, "           Shared Data Cache Line Table          \n");
 	fprintf(out, "=================================================\n");
@@ -2606,7 +2606,7 @@ static void perf_c2c__hists_fprintf(FILE *out, struct perf_session *session)
 
 	hists__fprintf(&c2c.hists.hists, true, 0, 0, 0, stdout, true);
 
-	fprintf(out, "\n");
+	fputc(out, '\n');
 	fprintf(out, "=================================================\n");
 	fprintf(out, "      Shared Cache Line Distribution Pareto      \n");
 	fprintf(out, "=================================================\n");
diff --git a/tools/perf/builtin-daemon.c b/tools/perf/builtin-daemon.c
index c4632577d129..7cb20b3a03e4 100644
--- a/tools/perf/builtin-daemon.c
+++ b/tools/perf/builtin-daemon.c
@@ -691,7 +691,7 @@ static int cmd_session_list(struct daemon *daemon, union cmd *cmd, FILE *out)
 			/* session up time */
 			csv_sep, (uint64_t)((curr - daemon->start) / 60));
 
-		fprintf(out, "\n");
+		fputc(out, '\n');
 	} else {
 		fprintf(out, "[%d:daemon] base: %s\n", getpid(), daemon->base);
 		if (cmd->list.verbose) {
@@ -730,7 +730,7 @@ static int cmd_session_list(struct daemon *daemon, union cmd *cmd, FILE *out)
 				/* session up time */
 				csv_sep, (uint64_t)((curr - session->start) / 60));
 
-			fprintf(out, "\n");
+			fputc(out, '\n');
 		} else {
 			fprintf(out, "[%d:%s] perf record %s\n",
 				session->pid, session->name, session->run);
diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
index d5c0d55cb82d..3706aff25883 100644
--- a/tools/perf/builtin-lock.c
+++ b/tools/perf/builtin-lock.c
@@ -1319,9 +1319,9 @@ static void print_result(void)
 
 		list_for_each_entry(key, &lock_keys, list) {
 			key->print(key, st);
-			fprintf(lock_output, " ");
+			fputc(lock_output, ' ');
 		}
-		fprintf(lock_output, "\n");
+		fputc(lock_output, '\n');
 
 		if (++printed >= print_nr_entries)
 			break;
@@ -1598,7 +1598,7 @@ static void print_header_csv(const char *sep)
 		fprintf(lock_output, "%s%s %s", "type", sep, "caller");
 		if (verbose > 0)
 			fprintf(lock_output, "%s %s", sep, "stacktrace");
-		fprintf(lock_output, "\n");
+		fputc(lock_output, '\n');
 		break;
 	case LOCK_AGGR_ADDR:
 		fprintf(lock_output, "%s%s %s%s %s\n", "address", sep, "symbol", sep, "type");
@@ -1629,7 +1629,7 @@ static void print_lock_stat_stdio(struct lock_contention *con, struct lock_stat
 
 	list_for_each_entry(key, &lock_keys, list) {
 		key->print(key, st);
-		fprintf(lock_output, " ");
+		fputc(lock_output, ' ');
 	}
 
 	switch (aggr_mode) {
@@ -1687,7 +1687,7 @@ static void print_lock_stat_csv(struct lock_contention *con, struct lock_stat *s
 	case LOCK_AGGR_CALLER:
 		fprintf(lock_output, "%s%s %s", get_type_flags_name(st->flags), sep, st->name);
 		if (verbose <= 0)
-			fprintf(lock_output, "\n");
+			fputc(lock_output, '\n');
 		break;
 	case LOCK_AGGR_TASK:
 		pid = st->addr;
@@ -1721,7 +1721,7 @@ static void print_lock_stat_csv(struct lock_contention *con, struct lock_stat *s
 			get_symbol_name_offset(kmap, sym, ip, buf, sizeof(buf));
 			fprintf(lock_output, "%s %#lx %s", i ? ":" : sep, (unsigned long) ip, buf);
 		}
-		fprintf(lock_output, "\n");
+		fputc(lock_output, '\n');
 	}
 }
 
@@ -1781,7 +1781,7 @@ static void print_footer_csv(int total, int bad, struct lock_contention_fails *f
 		for (i = 0; i < BROKEN_MAX; i++)
 			fprintf(lock_output, "%s bad_%s=%d", sep, name[i], bad_hist[i]);
 	}
-	fprintf(lock_output, "\n");
+	fputc(lock_output, '\n');
 }
 
 static void print_footer(int total, int bad, struct lock_contention_fails *fails)
diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c
index f91d8b1fbd01..2b202018ba59 100644
--- a/tools/perf/builtin-script.c
+++ b/tools/perf/builtin-script.c
@@ -2563,7 +2563,7 @@ static void process_event(struct perf_script *script,
 
 	perf_sample__fprintf_ipc(sample, evsel, fp);
 
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 
 	if (PRINT_FIELD(SRCCODE)) {
 		if (map__fprintf_srccode(al->map, al->addr, stdout,
@@ -2817,7 +2817,7 @@ static int process_deferred_sample_event(const struct perf_tool *tool,
 				    cursor, symbol_conf.bt_stop_list, fp);
 	}
 
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 
 	if (verbose > 0)
 		fflush(fp);
@@ -3273,11 +3273,11 @@ static int list_available_languages_cb(struct scripting_ops *ops, const char *sp
 
 static void list_available_languages(void)
 {
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	fprintf(stderr, "Scripting language extensions (used in "
 		"perf script -s [spec:]script.[spec]):\n\n");
 	script_spec__for_each(&list_available_languages_cb);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 
 /* Find script file relative to current directory or exec path */
diff --git a/tools/perf/ui/gtk/util.c b/tools/perf/ui/gtk/util.c
index c47f5c387838..037ebc47f7dc 100644
--- a/tools/perf/ui/gtk/util.c
+++ b/tools/perf/ui/gtk/util.c
@@ -37,7 +37,7 @@ static int perf_gtk__error(const char *format, va_list args)
 	    vasprintf(&msg, format, args) < 0) {
 		fprintf(stderr, "Error:\n");
 		vfprintf(stderr, format, args);
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 		return -1;
 	}
 
@@ -62,7 +62,7 @@ static int perf_gtk__warning_info_bar(const char *format, va_list args)
 	    vasprintf(&msg, format, args) < 0) {
 		fprintf(stderr, "Warning:\n");
 		vfprintf(stderr, format, args);
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 		return -1;
 	}
 
@@ -83,7 +83,7 @@ static int perf_gtk__warning_statusbar(const char *format, va_list args)
 	    vasprintf(&msg, format, args) < 0) {
 		fprintf(stderr, "Warning:\n");
 		vfprintf(stderr, format, args);
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 		return -1;
 	}
 
diff --git a/tools/perf/ui/stdio/hist.c b/tools/perf/ui/stdio/hist.c
index 8c4c8925df2c..044d2aa3b312 100644
--- a/tools/perf/ui/stdio/hist.c
+++ b/tools/perf/ui/stdio/hist.c
@@ -691,7 +691,7 @@ static int hists__fprintf_hierarchy_headers(struct hists *hists,
 		}
 
 next_line:
-		fprintf(fp, "\n");
+		fputc(fp, '\n');
 	}
 
 	fprintf(fp, "# ");
@@ -783,7 +783,7 @@ hists__fprintf_standard_headers(struct hists *hists,
 		if (line)
 			fprintf(fp, "# ");
 		fprintf_line(hists, hpp, line, fp);
-		fprintf(fp, "\n");
+		fputc(fp, '\n');
 	}
 
 	if (sep)
@@ -806,10 +806,10 @@ hists__fprintf_standard_headers(struct hists *hists,
 
 		width = fmt->width(fmt, hpp, hists);
 		for (i = 0; i < width; i++)
-			fprintf(fp, ".");
+			fputc(fp, '.');
 	}
 
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 	fprintf(fp, "#\n");
 	return hpp_list->nr_header_lines + 2;
 }
diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
index 95e3ec1171ac..d4534b489252 100644
--- a/tools/perf/util/cs-etm.c
+++ b/tools/perf/util/cs-etm.c
@@ -912,7 +912,7 @@ static void cs_etm__dump_event(struct cs_etm_queue *etmq,
 	const char *color = PERF_COLOR_BLUE;
 	size_t buffer_used = 0;
 
-	fprintf(stdout, "\n");
+	putchar('\n');
 	color_fprintf(stdout, color,
 		     ". ... CoreSight %s Trace data: size %#zx bytes\n",
 		     cs_etm_decoder__get_name(etmq->decoder), buffer->size);
diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c
index 6b5ffe81f141..5429984ab49c 100644
--- a/tools/perf/util/debug.c
+++ b/tools/perf/util/debug.c
@@ -350,7 +350,7 @@ void __dump_stack(FILE *file, void **stackdump, size_t stackdump_size)
 			fprintf(file, "    #%zd %p ", i, stackdump[i]);
 
 		map__fprintf_srcline(al.map, al.addr, "", file);
-		fprintf(file, "\n");
+		fputc(file, '\n');
 		addr_location__exit(&al);
 	}
 	thread__put(thread);
diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index e90e541f546b..e3a2a6e52ef0 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2454,7 +2454,7 @@ static void __print_pmu_caps(FILE *fp, int nr_caps, char **caps, char *pmu_name)
 		delimiter = ", ";
 	}
 
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 }
 
 static void print_cpu_pmu_caps(struct feat_fd *ff, FILE *fp)
@@ -2513,7 +2513,7 @@ static void print_pmu_mappings(struct feat_fd *ff, FILE *fp)
 		pmu_num--;
 	}
 
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 
 	if (!pmu_num)
 		return;
@@ -4349,7 +4349,7 @@ int perf_header__fprintf_info(struct perf_session *session, FILE *fp, bool full)
 			fprintf(fp, "%s ", feat_ops[bit].name);
 	}
 
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 	return 0;
 }
 
diff --git a/tools/perf/util/intel-pt-decoder/intel-pt-log.c b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
index ef55d6232cf0..0a35493b854a 100644
--- a/tools/perf/util/intel-pt-decoder/intel-pt-log.c
+++ b/tools/perf/util/intel-pt-decoder/intel-pt-log.c
@@ -70,14 +70,14 @@ static void intel_pt_print_data(const unsigned char *buf, int len, uint64_t pos,
 	int i;
 
 	for (i = 0; i < indent; i++)
-		fprintf(f, " ");
+		fputc(f, ' ');
 
 	fprintf(f, "  %08" PRIx64 ": ", pos);
 	for (i = 0; i < len; i++)
 		fprintf(f, " %02x", buf[i]);
 	for (; i < 16; i++)
 		fprintf(f, "   ");
-	fprintf(f, " ");
+	fputc(f, ' ');
 }
 
 static void intel_pt_print_no_data(uint64_t pos, int indent)
@@ -85,12 +85,12 @@ static void intel_pt_print_no_data(uint64_t pos, int indent)
 	int i;
 
 	for (i = 0; i < indent; i++)
-		fprintf(f, " ");
+		fputc(f, ' ');
 
 	fprintf(f, "  %08" PRIx64 ": ", pos);
 	for (i = 0; i < 16; i++)
 		fprintf(f, "   ");
-	fprintf(f, " ");
+	fputc(f, ' ');
 }
 
 static ssize_t log_buf__write(void *cookie, const char *buf, size_t size)
diff --git a/tools/perf/util/libbfd.c b/tools/perf/util/libbfd.c
index d8241c7caac5..efbfdad8b330 100644
--- a/tools/perf/util/libbfd.c
+++ b/tools/perf/util/libbfd.c
@@ -603,7 +603,7 @@ int symbol__disassemble_bpf_libbfd(struct symbol *sym __maybe_unused,
 		} else
 			srcline = NULL;
 
-		fprintf(s, "\n");
+		fputc(s, '\n');
 		prev_buf_size = buf_size;
 		fflush(s);
 
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 3237870a1a34..ef2b3226187c 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1257,7 +1257,7 @@ int perf_event__process_finished_round(const struct perf_tool *tool __maybe_unus
 				       struct ordered_events *oe)
 {
 	if (dump_trace)
-		fprintf(stdout, "\n");
+		putchar('\n');
 	return ordered_events__flush(oe, OE_FLUSH__ROUND);
 }
 
@@ -4015,7 +4015,7 @@ int perf_event__process_id_index(const struct perf_tool *tool __maybe_unused,
 				fprintf(stdout, "  machine_pid: %"PRI_ld64, e2->machine_pid);
 				fprintf(stdout, "  vcpu: %"PRI_lu64"\n", e2->vcpu);
 			} else {
-				fprintf(stdout, "\n");
+				putchar('\n');
 			}
 		}
 
diff --git a/tools/perf/util/stat-display.c b/tools/perf/util/stat-display.c
index f94f1324d24a..b90e3be95549 100644
--- a/tools/perf/util/stat-display.c
+++ b/tools/perf/util/stat-display.c
@@ -529,7 +529,7 @@ static void print_metric_json(struct perf_stat_config *config __maybe_unused,
 		}
 	}
 	if (!config->metric_only)
-		fprintf(out, "}");
+		fputc(out, '}');
 }
 
 static void new_line_json(struct perf_stat_config *config, void *ctx)
@@ -1316,7 +1316,7 @@ static void print_header_std(struct perf_stat_config *config,
 	FILE *output = config->output;
 	int i;
 
-	fprintf(output, "\n");
+	fputc(output, '\n');
 	fprintf(output, " Performance counter stats for ");
 	if (_target->bpf_str)
 		fprintf(output, "\'BPF program(s) %s", _target->bpf_str);
@@ -1333,7 +1333,7 @@ static void print_header_std(struct perf_stat_config *config,
 	else
 		fprintf(output, "thread id \'%s", _target->tid);
 
-	fprintf(output, "\'");
+	fputc(output, '\'');
 	if (config->run_count > 1)
 		fprintf(output, " (%d runs)", config->run_count);
 	fprintf(output, ":\n\n");
@@ -1406,9 +1406,9 @@ static void print_table(struct perf_stat_config *config, FILE *output, double av
 		fprintf(output, " %17.9f (%+.9f) ", run, run - avg);
 
 		for (h = 0; h < n; h++)
-			fprintf(output, "#");
+			fputc(output, '#');
 
-		fprintf(output, "\n");
+		fputc(output, '\n');
 	}
 
 	fprintf(output, "\n%*s# Final result:\n", indent, "");
@@ -1428,7 +1428,7 @@ static void print_footer(struct perf_stat_config *config)
 		return;
 
 	if (!config->null_run)
-		fprintf(output, "\n");
+		fputc(output, '\n');
 
 	if (config->run_count == 1) {
 		fprintf(output, " %17.9f seconds time elapsed", avg);
diff --git a/tools/perf/util/values.c b/tools/perf/util/values.c
index 6eaddfcf833e..2c5340a928dd 100644
--- a/tools/perf/util/values.c
+++ b/tools/perf/util/values.c
@@ -217,7 +217,7 @@ static void perf_read_values__display_pretty(FILE *fp,
 	fprintf(fp, "# %*s  %*s", pidwidth, "PID", tidwidth, "TID");
 	for (j = 0; j < values->num_counters; j++)
 		fprintf(fp, "  %*s", counterwidth[j], evsel__name(values->counters[j]));
-	fprintf(fp, "\n");
+	fputc(fp, '\n');
 
 	for (i = 0; i < values->threads; i++) {
 		fprintf(fp, "  %*d  %*d", pidwidth, values->pid[i],
@@ -225,7 +225,7 @@ static void perf_read_values__display_pretty(FILE *fp,
 		for (j = 0; j < values->num_counters; j++)
 			fprintf(fp, "  %*" PRIu64,
 				counterwidth[j], values->value[i][j]);
-		fprintf(fp, "\n");
+		fputc(fp, '\n');
 	}
 	free(counterwidth);
 }
diff --git a/tools/power/acpi/tools/acpidump/apdump.c b/tools/power/acpi/tools/acpidump/apdump.c
index 72ad7915b04f..600d5b6e04a8 100644
--- a/tools/power/acpi/tools/acpidump/apdump.c
+++ b/tools/power/acpi/tools/acpidump/apdump.c
@@ -171,7 +171,7 @@ ap_dump_table_buffer(struct acpi_table_header *table,
 	acpi_ut_dump_buffer_to_file(gbl_output_file,
 				    ACPI_CAST_PTR(u8, table), table_length,
 				    DB_BYTE_DISPLAY, 0);
-	fprintf(gbl_output_file, "\n");
+	fputc(gbl_output_file, '\n');
 	return (0);
 }
 
diff --git a/tools/power/x86/intel-speed-select/isst-display.c b/tools/power/x86/intel-speed-select/isst-display.c
index e4884eb02837..5d492780aad9 100644
--- a/tools/power/x86/intel-speed-select/isst-display.c
+++ b/tools/power/x86/intel-speed-select/isst-display.c
@@ -122,7 +122,7 @@ static void format_and_print(FILE *outf, int level, char *header, char *value)
 
 	if (level == 0) {
 		if (header)
-			fprintf(outf, "{");
+			fputc(outf, '{');
 		else
 			fprintf(outf, "\n}\n");
 
@@ -138,7 +138,7 @@ static void format_and_print(FILE *outf, int level, char *header, char *value)
 
 		if (value) {
 			if (last_level != level)
-				fprintf(outf, "\n");
+				fputc(outf, '\n');
 
 			fprintf(outf, "%s\"%s\": ", delimiters, header);
 			fprintf(outf, "\"%s\"", value);
@@ -156,7 +156,7 @@ static void format_and_print(FILE *outf, int level, char *header, char *value)
 					fprintf(outf, "\n%s}", delimiters);
 			}
 			if (abs(last_level - level) < 3)
-				fprintf(outf, "\n");
+				fputc(outf, '\n');
 			if (header)
 				fprintf(outf, "%s\"%s\": {", delimiters,
 					header);
diff --git a/tools/power/x86/turbostat/turbostat.c b/tools/power/x86/turbostat/turbostat.c
index 4ad7cb1df5c5..bfa38199275f 100644
--- a/tools/power/x86/turbostat/turbostat.c
+++ b/tools/power/x86/turbostat/turbostat.c
@@ -9022,7 +9022,7 @@ void dump_cpuid_hypervisor(void)
 	dump_word_chars(ebx);
 	dump_word_chars(ecx);
 	dump_word_chars(edx);
-	fprintf(outf, "\n");
+	fputc(outf, '\n');
 }
 
 void process_cpuid()
@@ -9692,7 +9692,7 @@ void topology_probe(bool startup)
 		fprintf(outf, " siblings");
 		for (ht_id = 0; ht_id <= MAX_HT_ID; ++ht_id)
 			fprintf(outf, " %d", cpus[i].ht_sibling_cpu_id[ht_id]);
-		fprintf(outf, "\n");
+		fputc(outf, '\n');
 	}
 
 }
diff --git a/tools/testing/selftests/bpf/benchs/bench_htab_mem.c b/tools/testing/selftests/bpf/benchs/bench_htab_mem.c
index 1ee217d97434..64b97a41af45 100644
--- a/tools/testing/selftests/bpf/benchs/bench_htab_mem.c
+++ b/tools/testing/selftests/bpf/benchs/bench_htab_mem.c
@@ -148,7 +148,7 @@ static const struct htab_mem_use_case *htab_mem_find_use_case_or_exit(const char
 	fprintf(stderr, "available use case:");
 	for (i = 0; i < ARRAY_SIZE(use_cases); i++)
 		fprintf(stderr, " %s", use_cases[i].name);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	exit(1);
 }
 
diff --git a/tools/testing/selftests/bpf/jit_disasm_helpers.c b/tools/testing/selftests/bpf/jit_disasm_helpers.c
index 3558fe10e28c..58ea2a2ec13e 100644
--- a/tools/testing/selftests/bpf/jit_disasm_helpers.c
+++ b/tools/testing/selftests/bpf/jit_disasm_helpers.c
@@ -228,7 +228,7 @@ int get_jited_program_text(int fd, char *text, size_t text_sz)
 	for (pc = 0, i = 0; i < jited_funcs; ++i) {
 		fprintf(text_out, "func #%d:\n", i);
 		disasm_one_func(text_out, image + pc, func_lens[i]);
-		fprintf(text_out, "\n");
+		fputc(text_out, '\n');
 		pc += func_lens[i];
 	}
 
diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c
index 7ba82974ee78..b520be1bf7aa 100644
--- a/tools/testing/selftests/bpf/test_progs.c
+++ b/tools/testing/selftests/bpf/test_progs.c
@@ -383,7 +383,7 @@ static void print_test_result(const struct prog_test_def *test, const struct tes
 	else
 		fprintf(env.stdout_saved, "OK (SKIP: %d/%d)", skipped_cnt, subtests_cnt);
 
-	fprintf(env.stdout_saved, "\n");
+	fputc(env.stdout_saved, '\n');
 }
 
 static void print_test_log(char *log_buf, size_t log_cnt)
@@ -391,7 +391,7 @@ static void print_test_log(char *log_buf, size_t log_cnt)
 	log_buf[log_cnt] = '\0';
 	fprintf(env.stdout_saved, "%s", log_buf);
 	if (log_buf[log_cnt - 1] != '\n')
-		fprintf(env.stdout_saved, "\n");
+		fputc(env.stdout_saved, '\n');
 }
 
 static void print_subtest_name(int test_num, int subtest_num,
@@ -409,7 +409,7 @@ static void print_subtest_name(int test_num, int subtest_num,
 	if (result)
 		fprintf(env.stdout_saved, ":%s", result);
 
-	fprintf(env.stdout_saved, "\n");
+	fputc(env.stdout_saved, '\n');
 }
 
 static void jsonw_write_log_message(json_writer_t *w, char *log_buf, size_t log_cnt)
@@ -1333,14 +1333,14 @@ void hexdump(const char *prefix, const void *buf, size_t len)
 	for (int i = 0; i < len; i++) {
 		if (!(i % 16)) {
 			if (i)
-				fprintf(stdout, "\n");
+				putchar('\n');
 			fprintf(stdout, "%s", prefix);
 		}
 		if (i && !(i % 8) && (i % 16))
-			fprintf(stdout, "\t");
+			putchar('\t');
 		fprintf(stdout, "%02X ", ((uint8_t *)(buf))[i]);
 	}
-	fprintf(stdout, "\n");
+	putchar('\n');
 }
 
 static void sigint_handler(int signum)
diff --git a/tools/testing/selftests/bpf/veristat.c b/tools/testing/selftests/bpf/veristat.c
index c9c257784ee3..61ea29bb35d7 100644
--- a/tools/testing/selftests/bpf/veristat.c
+++ b/tools/testing/selftests/bpf/veristat.c
@@ -1628,7 +1628,7 @@ static void dump(__u32 prog_id, enum dump_mode mode, const char *file_name, cons
 	printf("DUMP (%s) %s/%s:\n", mode == DUMP_JITED ? "JITED" : "XLATED", file_name, prog_name);
 	while (fgets(buf, sizeof(buf), fp))
 		fputs(buf, stdout);
-	fprintf(stdout, "\n");
+	putchar('\n');
 
 	if (ferror(fp))
 		fprintf(stderr, "Failed to dump BPF prog with error: %d\n", errno);
diff --git a/tools/testing/selftests/drivers/net/hw/ncdevmem.c b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
index d96e8a3b5a65..7bdcc4114dba 100644
--- a/tools/testing/selftests/drivers/net/hw/ncdevmem.c
+++ b/tools/testing/selftests/drivers/net/hw/ncdevmem.c
@@ -135,7 +135,7 @@ static void pr_err(const char *fmt, ...)
 
 	if (errno != 0)
 		fprintf(stderr, ": %s", strerror(errno));
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 
 static struct memory_buffer *udmabuf_alloc(size_t size)
diff --git a/tools/testing/selftests/kvm/s390/keyop.c b/tools/testing/selftests/kvm/s390/keyop.c
index c7805e87d12c..120834f8ba0d 100644
--- a/tools/testing/selftests/kvm/s390/keyop.c
+++ b/tools/testing/selftests/kvm/s390/keyop.c
@@ -117,7 +117,7 @@ static void dump_sk(const unsigned char skeys[], const char *descr)
 		fprintf(stderr, "# %3d: ", i);
 		for (j = 0; j < 32; j++)
 			fprintf(stderr, "%02x ", skeys[i + j]);
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 	}
 }
 
diff --git a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
index 78180da1efcc..40467e86bfd4 100644
--- a/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
+++ b/tools/testing/selftests/net/mptcp/pm_nl_ctl.c
@@ -208,7 +208,7 @@ static int capture_events(int fd, int event_group)
 		}
 		if (server_side)
 			fprintf(stderr, ",server_side:1");
-		fprintf(stderr, "\n");
+		fputc(stderr, '\n');
 	} while (1);
 
 	return 0;
diff --git a/tools/testing/selftests/net/psock_tpacket.c b/tools/testing/selftests/net/psock_tpacket.c
index 7caf3135448d..724da9222ad9 100644
--- a/tools/testing/selftests/net/psock_tpacket.c
+++ b/tools/testing/selftests/net/psock_tpacket.c
@@ -116,7 +116,7 @@ static int pfsocket(int ver)
 static void status_bar_update(void)
 {
 	if (total_packets % 10 == 0) {
-		fprintf(stderr, ".");
+		fputc(stderr, '.');
 		fflush(stderr);
 	}
 }
@@ -825,7 +825,7 @@ static int test_tpacket(int version, int type)
 	unmap_ring(sock, &ring);
 	close(sock);
 
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	return 0;
 }
 
diff --git a/tools/testing/selftests/net/txtimestamp.c b/tools/testing/selftests/net/txtimestamp.c
index 170be192f5c7..86c8d4945d73 100644
--- a/tools/testing/selftests/net/txtimestamp.c
+++ b/tools/testing/selftests/net/txtimestamp.c
@@ -200,10 +200,10 @@ static void __print_timestamp(const char *name, struct timespec *cur,
 		ts_delta = timespec_to_ns64(cur) - timespec_to_ns64(&ts_usr);
 		fprintf(stderr, "  (USR +");
 		__print_ts_delta_formatted(ts_delta);
-		fprintf(stderr, ")");
+		fputc(stderr, ')');
 	}
 
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 
 static void record_timestamp_usr(void)
@@ -254,7 +254,7 @@ static void print_timing_event(char *name, struct timing_event *te)
 	__print_ts_delta_formatted(te->min);
 	fprintf(stderr, ", max=");
 	__print_ts_delta_formatted(te->max);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 
 /* TODO: convert to check_and_print payload once API is stable */
@@ -271,7 +271,7 @@ static void print_payload(char *data, int len)
 	fprintf(stderr, "payload: ");
 	for (i = 0; i < len; i++)
 		fprintf(stderr, "%02hhx ", data[i]);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 
 static void print_pktinfo(int family, int ifindex, void *saddr, void *daddr)
@@ -933,7 +933,7 @@ int main(int argc, char **argv)
 	fprintf(stderr, "protocol:     %s\n", sock_names[cfg_proto]);
 	fprintf(stderr, "payload:      %u\n", cfg_payload_len);
 	fprintf(stderr, "server port:  %u\n", dest_port);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 
 	if (do_ipv4) {
 		if (cfg_do_listen)
diff --git a/tools/testing/selftests/powerpc/nx-gzip/gunz_test.c b/tools/testing/selftests/powerpc/nx-gzip/gunz_test.c
index 7c23d3dd7d6d..412defe98271 100644
--- a/tools/testing/selftests/powerpc/nx-gzip/gunz_test.c
+++ b/tools/testing/selftests/powerpc/nx-gzip/gunz_test.c
@@ -363,7 +363,7 @@ int decompress_file(int argc, char **argv, void *devhandle)
 			goto err3;
 		fprintf(stderr, "%02x ", tmp[i]);
 		if (i == 5)
-			fprintf(stderr, "\n");
+			fputc(stderr, '\n');
 	}
 	fprintf(stderr, "gzHeader MTIME, XFL, OS ignored\n");
 
diff --git a/tools/testing/selftests/vfio/lib/include/libvfio/assert.h b/tools/testing/selftests/vfio/lib/include/libvfio/assert.h
index 9fff88f6e4e1..682267bb71e3 100644
--- a/tools/testing/selftests/vfio/lib/include/libvfio/assert.h
+++ b/tools/testing/selftests/vfio/lib/include/libvfio/assert.h
@@ -11,7 +11,7 @@
 
 #define VFIO_LOG_AND_EXIT(...) do {		\
 	fprintf(stderr, "  " __VA_ARGS__);	\
-	fprintf(stderr, "\n");			\
+	fputc(stderr, '\n');			\
 	exit(KSFT_FAIL);			\
 } while (0)
 
diff --git a/tools/testing/selftests/vfio/lib/libvfio.c b/tools/testing/selftests/vfio/lib/libvfio.c
index 3a3d1ed635c1..80a312f149a6 100644
--- a/tools/testing/selftests/vfio/lib/libvfio.c
+++ b/tools/testing/selftests/vfio/lib/libvfio.c
@@ -60,16 +60,16 @@ char **vfio_selftests_get_bdfs(int *argc, char *argv[], int *nr_bdfs)
 	}
 
 	fprintf(stderr, "Unable to determine which device(s) to use, skipping test.\n");
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	fprintf(stderr, "To pass the device address via environment variable:\n");
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	fprintf(stderr, "    export VFIO_SELFTESTS_BDF=\"segment:bus:device.function\"\n");
 	fprintf(stderr, "    %s [options]\n", argv[0]);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	fprintf(stderr, "To pass the device address(es) via argv:\n");
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	fprintf(stderr, "    %s [options] segment:bus:device.function ...\n", argv[0]);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	exit(KSFT_SKIP);
 }
 
diff --git a/tools/testing/vsock/vsock_diag_test.c b/tools/testing/vsock/vsock_diag_test.c
index 081e045f4696..cc903cdb45d9 100644
--- a/tools/testing/vsock/vsock_diag_test.c
+++ b/tools/testing/vsock/vsock_diag_test.c
@@ -86,7 +86,7 @@ static void print_vsock_addr(FILE *fp, unsigned int cid, unsigned int port)
 		fprintf(fp, "%u:", cid);
 
 	if (port == VMADDR_PORT_ANY)
-		fprintf(fp, "*");
+		fputc(fp, '*');
 	else
 		fprintf(fp, "%u", port);
 }
@@ -94,7 +94,7 @@ static void print_vsock_addr(FILE *fp, unsigned int cid, unsigned int port)
 static void print_vsock_stat(FILE *fp, struct vsock_stat *st)
 {
 	print_vsock_addr(fp, st->msg.vdiag_src_cid, st->msg.vdiag_src_port);
-	fprintf(fp, " ");
+	fputc(fp, ' ');
 	print_vsock_addr(fp, st->msg.vdiag_dst_cid, st->msg.vdiag_dst_port);
 	fprintf(fp, " %s %s %s %u\n",
 		sock_type_str(st->msg.vdiag_type),
diff --git a/tools/thermal/tmon/sysfs.c b/tools/thermal/tmon/sysfs.c
index cb1108bc9249..ebdb95819a76 100644
--- a/tools/thermal/tmon/sysfs.c
+++ b/tools/thermal/tmon/sysfs.c
@@ -522,7 +522,7 @@ int update_thermal_data()
 	}
 
 	if (tmon_log) {
-		fprintf(tmon_log, "\n");
+		fputc(tmon_log, '\n');
 		fflush(tmon_log);
 	}
 
diff --git a/tools/thermal/tmon/tmon.c b/tools/thermal/tmon/tmon.c
index 7eb3216a27f4..9a972f73a2c0 100644
--- a/tools/thermal/tmon/tmon.c
+++ b/tools/thermal/tmon/tmon.c
@@ -199,7 +199,7 @@ static void prepare_logging(void)
 		fprintf(tmon_log, "%s%d ", ptdata.cdi[i].type,
 			ptdata.cdi[i].instance);
 
-	fprintf(tmon_log, "\n");
+	fputc(tmon_log, '\n');
 }
 
 static struct option opts[] = {
diff --git a/tools/tracing/latency/latency-collector.c b/tools/tracing/latency/latency-collector.c
index ef97916e3873..3dc6fb9df926 100644
--- a/tools/tracing/latency/latency-collector.c
+++ b/tools/tracing/latency/latency-collector.c
@@ -1999,7 +1999,7 @@ static void scan_arguments(int argc, char *argv[])
 "been enabled. Random sleep is intended for the following tracers:\n");
 			for (i = 0; random_tracers[i]; i++)
 				fprintf(stderr, "%s\n", random_tracers[i]);
-			fprintf(stderr, "\n");
+			fputc(stderr, '\n');
 		}
 	}
 
diff --git a/tools/tracing/rtla/src/common.c b/tools/tracing/rtla/src/common.c
index 8c7f5e75b2ec..e81e676d51d2 100644
--- a/tools/tracing/rtla/src/common.c
+++ b/tools/tracing/rtla/src/common.c
@@ -449,7 +449,7 @@ void common_usage(const char *tool, const char *mode,
 		fprintf(stderr, "%s [-h] ", mode);
 
 	print_msg_array(start_msgs);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 	print_msg_array(common_options);
 	print_msg_array(opt_msgs);
 
diff --git a/tools/tracing/rtla/src/utils.c b/tools/tracing/rtla/src/utils.c
index cb187e7d48d1..3532da2f2296 100644
--- a/tools/tracing/rtla/src/utils.c
+++ b/tools/tracing/rtla/src/utils.c
@@ -67,7 +67,7 @@ void fatal(const char *fmt, ...)
 	va_start(ap, fmt);
 	vfprintf(stderr, fmt, ap);
 	va_end(ap);
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 
 	exit(ERROR);
 }
diff --git a/tools/usb/ffs-test.c b/tools/usb/ffs-test.c
index 22b938fbdfb7..e993736ba0d6 100644
--- a/tools/usb/ffs-test.c
+++ b/tools/usb/ffs-test.c
@@ -562,7 +562,7 @@ empty_out_buf(struct thread *ignore, const void *buf, size_t nbytes)
 				fprintf(stderr, "%4zd:", len);
 			fprintf(stderr, " %02x", *p);
 			if (31 == (len % 32))
-				fprintf(stderr, "\n");
+				fputc(stderr, '\n');
 		}
 		fflush(stderr);
 		errno = EILSEQ;
diff --git a/tools/verification/rv/src/in_kernel.c b/tools/verification/rv/src/in_kernel.c
index e6dea4040f8f..26132171f600 100644
--- a/tools/verification/rv/src/in_kernel.c
+++ b/tools/verification/rv/src/in_kernel.c
@@ -667,7 +667,7 @@ static void ikm_usage_print_reactors(void)
 		end = strstr(start, "\n");
 	}
 
-	fprintf(stderr, "\n");
+	fputc(stderr, '\n');
 }
 /*
  * ikm_usage - print usage
-- 
2.55.0


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

end of thread, other threads:[~2026-07-23 15:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-23 10:25 [PATCH] tools: Use fputc() calls in some functions Markus Elfring
2026-07-23 13:47 ` Andi Kleen
2026-07-23 14:33   ` Steven Rostedt
2026-07-23 15:14   ` Segher Boessenkool
2026-07-23 15:07 ` bot+bpf-ci

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox