fix race in sendmmsg01
am: e20c780490

Change-Id: I763ae444aa5bfdffb7dc3bf3175fd072a621a1c7
diff --git a/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c b/testcases/kernel/syscalls/sendmmsg/sendmmsg01.c
index d1bdf40..ce100b2 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 @@
 	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 @@
 	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 @@
 	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);