[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