Looking at net/core/datagram.c:wait_for_packet the code will return 0
when the socket has been shutdown. That causes skb_recv_datagram to loop
which is in itself obviously incorrect for a shutdown socket (its in EOF
state)

I suspect it should read something like

        /* Socket shut down? */
        if (sk->shutdown & RCV_SHUTDOWN)
        {
                current->state = TASK_RUNNING;
                remove_wait_queue(sk->sleep, &wait);
                *err = 0;
                return 1;
        }



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to