diff mbox series

getdents: account for d_name size in tst_dirp_size

Message ID mvmtteg0wvn.fsf@suse.de
State Superseded
Headers show
Series getdents: account for d_name size in tst_dirp_size | expand

Commit Message

Andreas Schwab Sept. 16, 2024, 9:29 a.m. UTC
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(-)

Comments

Jan Stancek Sept. 16, 2024, 10:32 a.m. UTC | #1
On Mon, Sep 16, 2024 at 11:30 AM Andreas Schwab <schwab@suse.de> wrote:
>
> 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.

Signed-off-by seems missing.

Acked-by: Jan Stancek <jstancek@redhat.com>

> ---
>  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."
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
diff mbox series

Patch

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);