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.

The flag names are far shorter than the PAGE_SIZE buffer sysfs
provides, so this cannot overflow today.

Build tested ARCH=x86_64 with GCC 16.2.0, built out of tree with
make M=tools/testing/nvdimm:
tools/testing/nvdimm/test/ndtest.o

Assisted-by: LLM
Reviewed-by: Andy Shevchenko <[email protected]>
Reviewed-by: Dave Jiang <[email protected]>
Signed-off-by: Kees Cook <[email protected]>
---
Cc: <[email protected]>
Cc: Alison Schofield <[email protected]>
Cc: Dave Jiang <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Guangshuo Li <[email protected]>
Cc: Ira Weiny <[email protected]>
Cc: Uwe Kleine-König <[email protected]>
Cc: Vishal Verma <[email protected]>
---
 tools/testing/nvdimm/test/ndtest.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/nvdimm/test/ndtest.c 
b/tools/testing/nvdimm/test/ndtest.c
index 2051ad5d4882..f097f2992966 100644
--- a/tools/testing/nvdimm/test/ndtest.c
+++ b/tools/testing/nvdimm/test/ndtest.c
@@ -693,7 +693,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);
 }
 static DEVICE_ATTR_RO(flags);
 
-- 
2.34.1


Reply via email to