From a29ae2509b7dd646d9b56e2bc0b857bc9c55a3aa Mon Sep 17 00:00:00 2001 From: Florian Zumbiehl Date: Thu, 29 Nov 2007 23:19:23 +1100 Subject: [PATCH] --- yaml --- r: 74495 b: refs/heads/master c: 0a11225887fe6cbccd882404dc36ddc50f47daf9 h: refs/heads/master i: 74493: da5b82dadc81ab4a6a0a61673c60f81573f47e52 74491: 42f8e60bc8972b8431c55c8e2c0f6b2148db7303 74487: 33c5b8dd224012a74edc2cefbc11802574e2a8a4 74479: bb683056d45dd71e51359ed2c10c149e7d55aa8c 74463: b56692d7bc2d485084e506db8106d6b900d4a9a3 74431: 6405045a687f63099ebf6422696d38e3c57f8799 74367: d85c5fd8c5fde44f7a6e7bb5330f8d23fc4e3127 74239: 137e827968f93f649032c7545fd654fddbb7ccba v: v3 --- [refs] | 2 +- trunk/net/unix/af_unix.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index c3955f7761d4..4b99c48c7ba7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6ab3b487db77fa98a24560f11a5a8e744b98d877 +refs/heads/master: 0a11225887fe6cbccd882404dc36ddc50f47daf9 diff --git a/trunk/net/unix/af_unix.c b/trunk/net/unix/af_unix.c index e835da8fc091..060bba4567d2 100644 --- a/trunk/net/unix/af_unix.c +++ b/trunk/net/unix/af_unix.c @@ -1637,8 +1637,15 @@ static int unix_dgram_recvmsg(struct kiocb *iocb, struct socket *sock, mutex_lock(&u->readlock); skb = skb_recv_datagram(sk, flags, noblock, &err); - if (!skb) + if (!skb) { + unix_state_lock(sk); + /* Signal EOF on disconnected non-blocking SEQPACKET socket. */ + if (sk->sk_type == SOCK_SEQPACKET && err == -EAGAIN && + (sk->sk_shutdown & RCV_SHUTDOWN)) + err = 0; + unix_state_unlock(sk); goto out_unlock; + } wake_up_interruptible_sync(&u->peer_wait);