[LTP] [PATCH v3] read_all: Fix buffer too small for long paths
Michael Menasherov
mmenashe@redhat.com
Tue Sep 8 11:22:48 CEST 2026
queue_pop() copies each path into popped[BUFFER_SIZE], but BUFFER_SIZE
was 1024 while visit_dir() builds paths up to PATH_MAX. Any path longer
than 1023 bytes aborted the test with TBROK.
Use PATH_MAX for BUFFER_SIZE and MAX_PATH, and drop the extra -1 from
the queue_pop() bound so a PATH_MAX - 1 character path fits.
Tested on smaller boards and then on local machines with deeply nested
directories under /sys.
Fixes: 67c95fbbfc3a ("Add read_all file systems test")
Signed-off-by: Michael Menasherov <mmenashe@redhat.com>
---
testcases/kernel/fs/read_all/read_all.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/testcases/kernel/fs/read_all/read_all.c b/testcases/kernel/fs/read_all/read_all.c
index 5720ffb99..ec9454fc9 100644
--- a/testcases/kernel/fs/read_all/read_all.c
+++ b/testcases/kernel/fs/read_all/read_all.c
@@ -51,8 +51,8 @@
#include "tst_timer.h"
#define QUEUE_SIZE 16384
-#define BUFFER_SIZE 1024
-#define MAX_PATH 4096
+#define BUFFER_SIZE PATH_MAX
+#define MAX_PATH PATH_MAX
#define MAX_DISPLAY 40
struct queue {
@@ -131,7 +131,7 @@ static int queue_pop(struct queue *q)
while (q->data[i]) {
q->popped[j] = q->data[i];
- if (++j >= BUFFER_SIZE - 1)
+ if (++j >= BUFFER_SIZE)
tst_brk(TBROK, "Buffer is too small for path");
i = (i + 1) % QUEUE_SIZE;
--
2.55.0
More information about the ltp
mailing list