summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_socket.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/kern_socket.c b/sys/kern/kern_socket.c
index 42f31d9..065245b 100644
--- a/sys/kern/kern_socket.c
+++ b/sys/kern/kern_socket.c
@@ -32,6 +32,7 @@
#include <sys/systm.h>
#include <sys/proc.h>
#include <sys/namei.h>
+#include <sys/sched.h>
#include <sys/errno.h>
#include <sys/syslog.h>
#include <sys/filedesc.h>
@@ -477,6 +478,12 @@ recvmsg(int socket, struct msghdr *msg, int flags)
clp = &ksock->cmsg_list;
cmsg = TAILQ_FIRST(&clp->list);
+ /* Empty? */
+ while (cmsg == NULL) {
+ sched_yield();
+ cmsg = TAILQ_FIRST(&clp->list);
+ }
+
while (cmsg != NULL) {
cmsghdr = &cmsg->hdr;