[LTP] [PATCH] shmget03: fix test when some shm segments already exist
Alexey Kodanev
aleksei.kodanev@bell-sw.com
Tue Jul 6 16:18:18 CEST 2021
On 06.07.2021 16:43, Alexey Kodanev wrote:
> Hi Li,
> On 06.07.2021 15:49, Li Wang wrote:
>> Hi Alexey,
>>
>> On Tue, Jul 6, 2021 at 6:59 PM Alexey Kodanev <aleksei.kodanev@bell-sw.com <mailto:aleksei.kodanev@bell-sw.com>> wrote:
>>
>> It's unlikely, but still possible that some of them could be
>> created during the test as well, so the patch only checks
>> errno.
>>
>>
>> Thanks for fixing this, seems the msgget03 has this problem as well.
>> https://github.com/linux-test-project/ltp/issues/842 <https://github.com/linux-test-project/ltp/issues/842>
>
> Yes, it is the same, it can be easily reproduced:
>
> $ ./msgget03
> tst_test.c:1311: TINFO: Timeout per run is 0h 05m 00s
> msgget03.c:50: TINFO: The maximum number of message queues (32000) reached
> msgget03.c:29: TPASS: msgget(1627491660, 1536) : ENOSPC (28)
>
> $ ipcmk -Q
> Message queue id: 32768
>
> $ ./msgget03
> tst_test.c:1311: TINFO: Timeout per run is 0h 05m 00s
> msgget03.c:46: TBROK: msgget failed unexpectedly: ENOSPC (28)
>
>
> We can fix it similarly.
>
It's also possible that some resources will be freed during
the tests... perhaps, moving the loop to verify_*() is the
better option?
diff --git a/testcases/kernel/syscalls/ipc/msgget/msgget03.c b/testcases/kernel/syscalls/ipc/msgget/msgget03.c
index 76cf82cd3..5b760b1d6 100644
--- a/testcases/kernel/syscalls/ipc/msgget/msgget03.c
+++ b/testcases/kernel/syscalls/ipc/msgget/msgget03.c
@@ -26,29 +26,29 @@ static key_t msgkey;
static void verify_msgget(void)
{
- TST_EXP_FAIL2(msgget(msgkey + maxmsgs, IPC_CREAT | IPC_EXCL), ENOSPC,
- "msgget(%i, %i)", msgkey + maxmsgs, IPC_CREAT | IPC_EXCL);
+ int num, res;
+
+ for (num = 0; num <= maxmsgs; ++num) {
+ res = msgget(msgkey + num, IPC_CREAT | IPC_EXCL);
+ if (res == -1) {
+ if (errno == ENOSPC) {
+ tst_res(TPASS | TERRNO, "created queues %d", num);
+ return;
+ }
+ tst_brk(TFAIL | TERRNO,
+ "msgget failed unexpectedly, num %d", num);
+ }
+ queues[queue_cnt++] = res;
+ }
}
...
More information about the ltp
mailing list