perf_stats_show() and flags_show() build their output with a seq_buf and return seq_buf_used(), which may include the trailing NUL byte when the seq_buf has overflowed. Use seq_buf_strlen() instead.
Build tested ARCH=powerpc ppc64_defconfig with GCC powerpc64-linux-gnu 16.1.0: arch/powerpc/platforms/pseries/papr_scm.o Assisted-by: LLM Reviewed-by: Andy Shevchenko <[email protected]> Signed-off-by: Kees Cook <[email protected]> --- Cc: "Christophe Leroy (CS GROUP)" <[email protected]> Cc: "Uwe Kleine-König" <[email protected]> Cc: <[email protected]> Cc: Madhavan Srinivasan <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Nicholas Piggin <[email protected]> Cc: Shivaprasad G Bhat <[email protected]> Cc: Thorsten Blum <[email protected]> --- arch/powerpc/platforms/pseries/papr_scm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/powerpc/platforms/pseries/papr_scm.c b/arch/powerpc/platforms/pseries/papr_scm.c index 75da96c08cdd..b03cfd8528f5 100644 --- a/arch/powerpc/platforms/pseries/papr_scm.c +++ b/arch/powerpc/platforms/pseries/papr_scm.c @@ -1108,7 +1108,7 @@ static ssize_t perf_stats_show(struct device *dev, free_stats: kfree(stats); - return rc ? rc : (ssize_t)seq_buf_used(&s); + return rc ?: (ssize_t)seq_buf_strlen(&s); } static DEVICE_ATTR_ADMIN_RO(perf_stats); @@ -1150,7 +1150,7 @@ static ssize_t flags_show(struct device *dev, if (seq_buf_used(&s)) seq_buf_printf(&s, "\n"); - return seq_buf_used(&s); + return seq_buf_strlen(&s); } DEVICE_ATTR_RO(flags); -- 2.34.1

