--- linux-2.4.27/net/unix/af_unix.c 2004-11-24 08:23:21 -08:00 +++ linux-2.4.28/net/unix/af_unix.c 2004-11-24 08:23:21 -08:00 @@ -1403,9 +1403,11 @@ msg->msg_namelen = 0; + down(&sk->protinfo.af_unix.readsem); + skb = skb_recv_datagram(sk, flags, noblock, &err); if (!skb) - goto out; + goto out_unlock; wake_up_interruptible(&sk->protinfo.af_unix.peer_wait); @@ -1449,6 +1451,8 @@ out_free: skb_free_datagram(sk,skb); +out_unlock: + up(&sk->protinfo.af_unix.readsem); out: return err; }