Re: net/unix: sk_socket can disappear when state is unlocked

From: Mark Salyzyn
Date: Fri May 22 2015 - 12:24:34 EST


On 05/22/2015 08:35 AM, Hannes Frederic Sowa wrote:
I still wonder if we need to actually recheck the condition and not
simply break out of unix_stream_data_wait:

We return to the unix_stream_recvmsg loop and recheck the
sk_receive_queue. At this point sk_receive_queue is not really protected
with unix_state_lock against concurrent modification with unix_release,
as such we could end up concurrently dequeueing packets if socket is
DEAD.
sock destroy(sic) is called before sock_orphan which sets SOCK_DEAD, so the receive queue has already been drained.

Sincerely -- Mark Salyzyn
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/