* [LTP] [PATCH] pipe07: close /proc/self/fd after counting fds
@ 2023-09-30 0:00 Edward Liaw via ltp
2023-09-30 6:34 ` Petr Vorel
0 siblings, 1 reply; 3+ messages in thread
From: Edward Liaw via ltp @ 2023-09-30 0:00 UTC (permalink / raw)
To: ltp; +Cc: kernel-team
Leaving the directory fd open will count against the max number of fds
opened, so the final expected count will be off.
Also, removed the halving / doubling of exp_num_pipes since it is
redundant.
Signed-off-by: Edward Liaw <edliaw@google.com>
---
testcases/kernel/syscalls/pipe/pipe07.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/testcases/kernel/syscalls/pipe/pipe07.c b/testcases/kernel/syscalls/pipe/pipe07.c
index 196485684..01f6b78f8 100644
--- a/testcases/kernel/syscalls/pipe/pipe07.c
+++ b/testcases/kernel/syscalls/pipe/pipe07.c
@@ -45,6 +45,8 @@ static int record_open_fds(void)
opened_fds[num_opened_fds++] = fd;
}
+ SAFE_CLOSEDIR(dir);
+
return num_opened_fds;
}
@@ -56,8 +58,8 @@ static void setup(void)
tst_res(TINFO, "getdtablesize() = %d", max_fds);
pipe_fds = SAFE_MALLOC(max_fds * sizeof(int));
- exp_num_pipes = (max_fds - record_open_fds()) / 2;
- tst_res(TINFO, "expected max fds to be opened by pipe(): %d", exp_num_pipes * 2);
+ exp_num_pipes = max_fds - record_open_fds();
+ tst_res(TINFO, "expected max fds to be opened by pipe(): %d", exp_num_pipes);
}
static void run(void)
@@ -73,7 +75,7 @@ static void run(void)
} while (!TST_RET);
TST_EXP_EQ_LI(errno, EMFILE);
- TST_EXP_EQ_LI(exp_num_pipes * 2, num_pipe_fds);
+ TST_EXP_EQ_LI(exp_num_pipes, num_pipe_fds);
for (int i = 0; i < num_pipe_fds; i++)
SAFE_CLOSE(pipe_fds[i]);
--
2.42.0.582.g8ccd20d70d-goog
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [LTP] [PATCH] pipe07: close /proc/self/fd after counting fds
2023-09-30 0:00 [LTP] [PATCH] pipe07: close /proc/self/fd after counting fds Edward Liaw via ltp
@ 2023-09-30 6:34 ` Petr Vorel
2023-10-01 4:21 ` Edward Liaw via ltp
0 siblings, 1 reply; 3+ messages in thread
From: Petr Vorel @ 2023-09-30 6:34 UTC (permalink / raw)
To: Edward Liaw; +Cc: kernel-team, ltp
Hi Edward,
> Leaving the directory fd open will count against the max number of fds
> opened, so the final expected count will be off.
> Also, removed the halving / doubling of exp_num_pipes since it is
> redundant.
> Signed-off-by: Edward Liaw <edliaw@google.com>
> ---
> testcases/kernel/syscalls/pipe/pipe07.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
> diff --git a/testcases/kernel/syscalls/pipe/pipe07.c b/testcases/kernel/syscalls/pipe/pipe07.c
> index 196485684..01f6b78f8 100644
> --- a/testcases/kernel/syscalls/pipe/pipe07.c
> +++ b/testcases/kernel/syscalls/pipe/pipe07.c
> @@ -45,6 +45,8 @@ static int record_open_fds(void)
> opened_fds[num_opened_fds++] = fd;
> }
> + SAFE_CLOSEDIR(dir);
IMHO this changes counting from 1020:
pipe07.c:56: TINFO: getdtablesize() = 1024
pipe07.c:60: TINFO: expected max fds to be opened by pipe(): 1020
pipe07.c:75: TPASS: errno == EMFILE (24)
pipe07.c:76: TPASS: exp_num_pipes * 2 == num_pipe_fds (1020)
to 1021, which leads to failure:
pipe07.c:58: TINFO: getdtablesize() = 1024
pipe07.c:62: TINFO: expected max fds to be opened by pipe(): 1021
pipe07.c:77: TPASS: errno == EMFILE (24)
pipe07.c:78: TFAIL: exp_num_pipes (1021) != num_pipe_fds (1020)
> +
> return num_opened_fds;
This is not elegant, but get's the correct count. Will it fail on AOSP?
return num_opened_fds + 1;
> }
> @@ -56,8 +58,8 @@ static void setup(void)
> tst_res(TINFO, "getdtablesize() = %d", max_fds);
> pipe_fds = SAFE_MALLOC(max_fds * sizeof(int));
> - exp_num_pipes = (max_fds - record_open_fds()) / 2;
> - tst_res(TINFO, "expected max fds to be opened by pipe(): %d", exp_num_pipes * 2);
> + exp_num_pipes = max_fds - record_open_fds();
> + tst_res(TINFO, "expected max fds to be opened by pipe(): %d", exp_num_pipes);
It'd be slightly more readable if this was in separate patch
(as it modifies the same variable), but it's up to you.
Kind regards,
Petr
> }
> static void run(void)
> @@ -73,7 +75,7 @@ static void run(void)
> } while (!TST_RET);
> TST_EXP_EQ_LI(errno, EMFILE);
> - TST_EXP_EQ_LI(exp_num_pipes * 2, num_pipe_fds);
> + TST_EXP_EQ_LI(exp_num_pipes, num_pipe_fds);
> for (int i = 0; i < num_pipe_fds; i++)
> SAFE_CLOSE(pipe_fds[i]);
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [LTP] [PATCH] pipe07: close /proc/self/fd after counting fds
2023-09-30 6:34 ` Petr Vorel
@ 2023-10-01 4:21 ` Edward Liaw via ltp
0 siblings, 0 replies; 3+ messages in thread
From: Edward Liaw via ltp @ 2023-10-01 4:21 UTC (permalink / raw)
To: Petr Vorel; +Cc: kernel-team, LTP List
On Fri, Sep 29, 2023, 11:34 PM Petr Vorel <pvorel@suse.cz> wrote:
> Hi Edward,
>
> > Leaving the directory fd open will count against the max number of fds
> > opened, so the final expected count will be off.
>
> > Also, removed the halving / doubling of exp_num_pipes since it is
> > redundant.
> > Signed-off-by: Edward Liaw <edliaw@google.com>
> > ---
> > testcases/kernel/syscalls/pipe/pipe07.c | 8 +++++---
> > 1 file changed, 5 insertions(+), 3 deletions(-)
>
> > diff --git a/testcases/kernel/syscalls/pipe/pipe07.c
> b/testcases/kernel/syscalls/pipe/pipe07.c
> > index 196485684..01f6b78f8 100644
> > --- a/testcases/kernel/syscalls/pipe/pipe07.c
> > +++ b/testcases/kernel/syscalls/pipe/pipe07.c
> > @@ -45,6 +45,8 @@ static int record_open_fds(void)
> > opened_fds[num_opened_fds++] = fd;
> > }
>
> > + SAFE_CLOSEDIR(dir);
> IMHO this changes counting from 1020:
>
> pipe07.c:56: TINFO: getdtablesize() = 1024
> pipe07.c:60: TINFO: expected max fds to be opened by pipe(): 1020
> pipe07.c:75: TPASS: errno == EMFILE (24)
> pipe07.c:76: TPASS: exp_num_pipes * 2 == num_pipe_fds (1020)
>
> to 1021, which leads to failure:
>
> pipe07.c:58: TINFO: getdtablesize() = 1024
> pipe07.c:62: TINFO: expected max fds to be opened by pipe(): 1021
> pipe07.c:77: TPASS: errno == EMFILE (24)
> pipe07.c:78: TFAIL: exp_num_pipes (1021) != num_pipe_fds (1020)
>
> > +
> > return num_opened_fds;
> This is not elegant, but get's the correct count. Will it fail on AOSP?
>
> return num_opened_fds + 1;
>
I'll get back to you on Monday, but I think this is because each pipe
creates two fds, the resulting exp number of pipes will have to be even,
and I messed that up by removing the halving/doubling. When I tested it,
the exp_num_pipes happened to be even, so I didn't run into the odd case.
> }
>
> > @@ -56,8 +58,8 @@ static void setup(void)
> > tst_res(TINFO, "getdtablesize() = %d", max_fds);
> > pipe_fds = SAFE_MALLOC(max_fds * sizeof(int));
>
> > - exp_num_pipes = (max_fds - record_open_fds()) / 2;
> > - tst_res(TINFO, "expected max fds to be opened by pipe(): %d",
> exp_num_pipes * 2);
> > + exp_num_pipes = max_fds - record_open_fds();
> > + tst_res(TINFO, "expected max fds to be opened by pipe(): %d",
> exp_num_pipes);
>
> It'd be slightly more readable if this was in separate patch
> (as it modifies the same variable), but it's up to you.
>
> Kind regards,
> Petr
>
> > }
>
> > static void run(void)
> > @@ -73,7 +75,7 @@ static void run(void)
> > } while (!TST_RET);
>
> > TST_EXP_EQ_LI(errno, EMFILE);
> > - TST_EXP_EQ_LI(exp_num_pipes * 2, num_pipe_fds);
> > + TST_EXP_EQ_LI(exp_num_pipes, num_pipe_fds);
>
> > for (int i = 0; i < num_pipe_fds; i++)
> > SAFE_CLOSE(pipe_fds[i]);
>
--
Mailing list info: https://lists.linux.it/listinfo/ltp
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-10-01 4:22 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-30 0:00 [LTP] [PATCH] pipe07: close /proc/self/fd after counting fds Edward Liaw via ltp
2023-09-30 6:34 ` Petr Vorel
2023-10-01 4:21 ` Edward Liaw via ltp
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox