<br>----- Original Message -----
<br>From: "Viresh Kumar" <viresh.kumar@linaro.org>
<br>To: "Xiao Yang" <yangx.jy@cn.fujitsu.com>
<br>Cc: ltp@lists.linux.it
<br>Sent: Mon, 4 May 2020 10:39:37 +0530
<br>Subject: Re: [LTP] [PATCH 1/2] syscalls/pidfd_open01.c: Add check for close-on-exec flag
<br>
<br>On 30-04-20, 16:57, Xiao Yang wrote:<br>> pidfd_open(2) will set close-on-exec flag on the file descriptor as it<br>> manpage states, so check close-on-exec flag by fcntl(2).<br>> <br>> Also avoid compiler warning by replacing (long) TST_RET with (int) pidfd:<br>> ------------------------------------------------------<br>> In file included from pidfd_open01.c:9:<br>> pidfd_open01.c: In function ¡®run¡¯:<br>> ../../../../include/tst_test.h:76:41: warning: format ¡®%i¡¯ expects argument of type ¡®int¡¯, but argument 5 has type ¡®long int¡¯ [-Wformat=]<br>>    76 |   tst_brk_(__FILE__, __LINE__, (ttype), (arg_fmt), ##__VA_ARGS__);\<br>>       |                                         ^~~~~~~~~<br>> ../../../../include/tst_safe_macros.h:224:5: note: in expansion of macro ¡®tst_brk¡¯<br>>   224 |     tst_brk(TBROK | TERRNO,                          \<br>>       |     ^~~~~~~<br>> pidfd_open01.c:20:9: note: in expansion of macro ¡®SAFE_FCNTL¡¯<br>>    20 |  flag = SAFE_FCNTL(TST_RET, F_GETFD);<br><br>This log isn't useful as the warning started coming after your change<br>only and not before.<div><br></div><div>Hi£¬</div><div><br></div><div>Right£¬just add a hint why I use pidfd instead so I want to keep it.  Of course£¬I will <span style="background-color: transparent;">say that avoid compiler warning from my change in v2 patch.</span></div><div><br></div><div>Thanks£¬</div><div>Xiao Yang</div><div><br>> ------------------------------------------------------<br>> <br>> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com><br>> ---<br>>  .../kernel/syscalls/pidfd_open/pidfd_open01.c  | 18 ++++++++++++++----<br>>  1 file changed, 14 insertions(+), 4 deletions(-)<br>> <br>> diff --git a/testcases/kernel/syscalls/pidfd_open/pidfd_open01.c b/testcases/kernel/syscalls/pidfd_open/pidfd_open01.c<br>> index 93bb86687..293e93b63 100644<br>> --- a/testcases/kernel/syscalls/pidfd_open/pidfd_open01.c<br>> +++ b/testcases/kernel/syscalls/pidfd_open/pidfd_open01.c<br>> @@ -6,17 +6,27 @@<br>>   * Basic pidfd_open() test, fetches the PID of the current process and tries to<br>>   * get its file descriptor.<br>>   */<br>> +<br>> +#include <sys/types.h><br>> +#include <unistd.h><br>> +#include <fcntl.h><br>>  #include "tst_test.h"<br>>  #include "lapi/pidfd_open.h"<br>>  <br>>  static void run(void)<br>>  {<br>> -      TEST(pidfd_open(getpid(), 0));<br>> +        int pidfd = 0, flag = 0;<br><br>None of these need to be initialized.<br><br>> +<br>> +       pidfd = pidfd_open(getpid(), 0);<br>> +    if (pidfd == -1)<br>> +            tst_brk(TFAIL | TERRNO, "pidfd_open(getpid(), 0) failed");<br><br>This could have been written as:<br>        TEST(pidfd = pidfd_open(getpid(), 0));<br><br>> +<br>> +   flag = SAFE_FCNTL(pidfd, F_GETFD);<br>>  <br>> -        if (TST_RET == -1)<br>> -          tst_brk(TFAIL | TTERRNO, "pidfd_open(getpid(), 0) failed");<br>> +     SAFE_CLOSE(pidfd);<br>>  <br>> -       SAFE_CLOSE(TST_RET);<br>> +       if (!(flag & FD_CLOEXEC))<br>> +               tst_brk(TFAIL, "pidfd_open(getpid(), 0) didn't set close-on-exec flag");<br>>  <br>>      tst_res(TPASS, "pidfd_open(getpid(), 0) passed");<br>>  }<br>> -- <br>> 2.21.0<br>> <br>> <br><br>-- <br>viresh<br><br>-- <br>Mailing list info: https://lists.linux.it/listinfo/ltp<br></div><br><br><span title="neteasefooter"><p> </p></span>