[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