[LTP] [PATCH v2] unshare03: set nr_open with sizeof(long)*8
Li Wang
liwang@redhat.com
Fri Apr 11 05:21:23 CEST 2025
On Fri, Apr 11, 2025 at 11:09 AM Li Wang <liwang@redhat.com> wrote:
>
>
> On Wed, Apr 9, 2025 at 3:50 PM lufei <lufei@uniontech.com> wrote:
>
>> Set nr_open with sizeof(long)*8 to trigger EMFILE, instead of reading
>> number of filedescriptors limit.
>>
>
> Any new changes in Linux that have made the previous way not work now?
>
Ah, I see. As you pointed out in v1, that hard limit may lead to dup2
ENOMEM error which brings the result to TBROK ona small RAM system.
So, I agree Jan, we'd better add more description to the patch.
Reviewed-by: Li Wang <liwang@redhat.com>
>
>
>
>>
>> Signed-off-by: lufei <lufei@uniontech.com>
>> ---
>> testcases/kernel/syscalls/unshare/unshare03.c | 23 ++-----------------
>> 1 file changed, 2 insertions(+), 21 deletions(-)
>>
>> diff --git a/testcases/kernel/syscalls/unshare/unshare03.c
>> b/testcases/kernel/syscalls/unshare/unshare03.c
>> index 7c5e71c4e..c3b98930d 100644
>> --- a/testcases/kernel/syscalls/unshare/unshare03.c
>> +++ b/testcases/kernel/syscalls/unshare/unshare03.c
>> @@ -17,44 +17,25 @@
>> #include "lapi/sched.h"
>>
>> #define FS_NR_OPEN "/proc/sys/fs/nr_open"
>> -#define NR_OPEN_LIMIT 1024
>> -#define NR_OPEN_DUP 64
>>
>> #ifdef HAVE_UNSHARE
>>
>> static void run(void)
>> {
>> - int nr_open;
>> - int nr_limit;
>> - struct rlimit rlimit;
>> struct tst_clone_args args = {
>> .flags = CLONE_FILES,
>> .exit_signal = SIGCHLD,
>> };
>>
>> - SAFE_FILE_SCANF(FS_NR_OPEN, "%d", &nr_open);
>> - tst_res(TDEBUG, "Maximum number of file descriptors: %d",
>> nr_open);
>> + int nr_open = sizeof(long) * 8;
>>
>> - nr_limit = nr_open + NR_OPEN_LIMIT;
>> - SAFE_FILE_PRINTF(FS_NR_OPEN, "%d", nr_limit);
>> -
>> - SAFE_GETRLIMIT(RLIMIT_NOFILE, &rlimit);
>> -
>> - rlimit.rlim_cur = nr_limit;
>> - rlimit.rlim_max = nr_limit;
>> -
>> - SAFE_SETRLIMIT(RLIMIT_NOFILE, &rlimit);
>> - tst_res(TDEBUG, "Set new maximum number of file descriptors to :
>> %d",
>> - nr_limit);
>> -
>> - SAFE_DUP2(2, nr_open + NR_OPEN_DUP);
>> + SAFE_DUP2(2, nr_open + 1);
>>
>> if (!SAFE_CLONE(&args)) {
>> SAFE_FILE_PRINTF(FS_NR_OPEN, "%d", nr_open);
>> TST_EXP_FAIL(unshare(CLONE_FILES), EMFILE);
>> exit(0);
>> }
>> -
>> }
>>
>> static void setup(void)
>> --
>> 2.39.3
>>
>>
>> --
>> Mailing list info: https://lists.linux.it/listinfo/ltp
>>
>>
>
> --
> Regards,
> Li Wang
>
--
Regards,
Li Wang
More information about the ltp
mailing list