diff options
author | Steve Muckle <smuckle@google.com> | 2019-07-23 13:40:49 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-07-23 13:40:49 -0700 |
commit | 305e408aeadbc5a1d41e86cb28afd0e88d08bdd3 (patch) | |
tree | 897d45f2601301b1f5aad20fc783cace1428fa74 | |
parent | 007b967000b955c221285e9875a4f3b968637fd3 (diff) | |
parent | e20c7804907ae45e58371095ed0177b448c415d8 (diff) | |
download | ltp-android-10.0.0_r36.tar.gz |
fix race in sendmmsg01android-mainline-10.0.0_r9android-mainline-10.0.0_r7android-mainline-10.0.0_r5android-mainline-10.0.0_r4android-mainline-10.0.0_r10android-10.0.0_r45android-10.0.0_r44android-10.0.0_r43android-10.0.0_r42android-10.0.0_r41android-10.0.0_r40android-10.0.0_r39android-10.0.0_r38android-10.0.0_r37android-10.0.0_r36android-10.0.0_r35android-10.0.0_r34android-10.0.0_r33android-10.0.0_r32android-10.0.0_r31android-10.0.0_r30android10-qpr3-s1-releaseandroid10-qpr3-releaseandroid10-qpr2-s4-releaseandroid10-qpr2-s3-releaseandroid10-qpr2-s2-releaseandroid10-qpr2-s1-releaseandroid10-qpr2-releaseandroid10-qpr1-mainline-releaseandroid10-mainline-media-releaseandroid10-d4-s1-releaseandroid10-d4-release
am: e20c780490
Change-Id: I763ae444aa5bfdffb7dc3bf3175fd072a621a1c7
-rw-r--r-- | testcases/kernel/syscalls/sendmmsg/sendmmsg01.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c b/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c index d1bdf40a1..ce100b2ee 100644 --- a/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c +++ b/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c @@ -5,6 +5,7 @@ #define _GNU_SOURCE #include <netinet/ip.h> +#include <semaphore.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -18,6 +19,8 @@ #define BUFSIZE 16 #define VLEN 2 +static sem_t send_sem; + static void *sender_thread(LTP_ATTRIBUTE_UNUSED void *arg) { struct sockaddr_in addr; @@ -50,6 +53,8 @@ static void *sender_thread(LTP_ATTRIBUTE_UNUSED void *arg) msg[1].msg_hdr.msg_iov = &msg2; msg[1].msg_hdr.msg_iovlen = 1; + sem_wait(&send_sem); + retval = sendmmsg(send_sockfd, msg, 2, 0); if (retval < 0) tst_brk(TFAIL|TTERRNO, "sendmmsg failed"); @@ -74,6 +79,8 @@ static void *receiver_thread(LTP_ATTRIBUTE_UNUSED void *arg) addr.sin_port = htons(1234); SAFE_BIND(receive_sockfd, (struct sockaddr *)&addr, sizeof(addr)); + sem_post(&send_sem); + memset(msgs, 0, sizeof(msgs)); for (i = 0; i < VLEN; i++) { iovecs[i].iov_base = bufs[i]; @@ -112,6 +119,8 @@ static void run(void) pthread_t sender; pthread_t receiver; + sem_init(&send_sem, 0, 0); + SAFE_PTHREAD_CREATE(&sender, NULL, sender_thread, NULL); SAFE_PTHREAD_CREATE(&receiver, NULL, receiver_thread, NULL); SAFE_PTHREAD_JOIN(sender, NULL); |