[LTP] [PATCH] pipe/pipe15.c: Adjust fd check for pipe creation

Petr Vorel pvorel@suse.cz
Fri Mar 1 13:41:29 CET 2024


HI Wenjie, Marius,

> A pipe occupies 2 fds, and considering 3 standard fds,
> we should compare rlim_max with such *2+3 calculated value
> to verify whether the maximum file descriptor configuration
> of the current machine is sufficient.

Indeed, 1024*2+3 is the lowest number which passes with non-default ulimit:

ulimit -n $((1024*2+3)) && ./pipe15

Therefore I merged, thank you!

BTW I wonder how did you encounter this?

@Marius FYI I also fixed SIGSEGV when low ulimit, see
https://github.com/linux-test-project/ltp/commit/fc6adb8454df34fa87b462844b740cc3a0b84caa

> Signed-off-by: Wenjie Xu <xuwenjie04@baidu.com>
> ---
> testcases/kernel/syscalls/pipe/pipe15.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

> diff --git a/testcases/kernel/syscalls/pipe/pipe15.c b/testcases/kernel/syscalls/pipe/pipe15.c
> index c85ad1820..9e02fe2eb 100644
> --- a/testcases/kernel/syscalls/pipe/pipe15.c
> +++ b/testcases/kernel/syscalls/pipe/pipe15.c
> @@ -59,7 +59,7 @@ static void setup(void)
>       tst_res(TINFO, "Creating %i pipes", pipe_count);

>       SAFE_GETRLIMIT(RLIMIT_NOFILE, &nfd);
> -     if (nfd.rlim_max < (unsigned long)pipe_count)
> +    if (nfd.rlim_max < (unsigned long)pipe_count * 2 + 3)
nit: you mixed tabs with spaces or broke indent. And patch was not applicable
(even before my changes), therefore I needed to do the changes myself and thus I
put my fix fc6adb845 ("pipe15: Avoid SIGSEGV in cleanup") before.

Kind regards,
Petr

>              tst_brk(TCONF, "NOFILE limit max too low: %lu < %i", nfd.rlim_max, pipe_count);
>       if (nfd.rlim_cur < nfd.rlim_max) {
>              nfd.rlim_cur = nfd.rlim_max;


More information about the ltp mailing list