[LTP] [PATCH] getdents: account for d_name size in tst_dirp_size

Andreas Schwab schwab@suse.de
Mon Sep 16 11:29:48 CEST 2024


The linux_dirent and linux_dirent64 structs do not contain space for the
d_name member.  Add NAME_MAX to the size in tst_dirp_size so that the
getdents syscalls do not spuriously fail with EINVAL instead of EFAULT.
---
 testcases/kernel/syscalls/getdents/getdents.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/testcases/kernel/syscalls/getdents/getdents.h b/testcases/kernel/syscalls/getdents/getdents.h
index 560df4126..02c3bc509 100644
--- a/testcases/kernel/syscalls/getdents/getdents.h
+++ b/testcases/kernel/syscalls/getdents/getdents.h
@@ -64,9 +64,9 @@ tst_dirp_size(void)
 {
 	switch (tst_variant) {
 	case 0:
-		return sizeof(struct linux_dirent);
+		return sizeof(struct linux_dirent) + NAME_MAX;
 	case 1:
-		return sizeof(struct linux_dirent64);
+		return sizeof(struct linux_dirent64) + NAME_MAX;
 #if HAVE_GETDENTS
 	case 2:
 		return sizeof(struct dirent);
-- 
2.46.1


-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


More information about the ltp mailing list