msg->msg_namelen = 0;
down(&u->readsem);
skb = skb_recv_datagram(sk, flags, noblock, &err);
if (!skb)
goto out;
goto out_unlock;
wake_up_interruptible(&u->peer_wait);
out_free:
skb_free_datagram(sk,skb);
out_unlock:
up(&u->readsem);
out:
return err;
}