net: unix: non blocking recvmsg() should not return -EINTR
authorEric Dumazet <edumazet@google.com>
Wed, 26 Mar 2014 01:42:27 +0000 (18:42 -0700)
committerJiri Slaby <jslaby@suse.cz>
Fri, 18 Apr 2014 09:06:58 +0000 (11:06 +0200)
commite3749adbcbf79583fb092fa1866a160f664912eb
treeff1d6a82bca1d29e245a8af99739a7e66461510c
parentd291aa322b32aa808e914996c7f234024e53432d
net: unix: non blocking recvmsg() should not return -EINTR

[ Upstream commit de1443916791d75fdd26becb116898277bb0273f ]

Some applications didn't expect recvmsg() on a non blocking socket
could return -EINTR. This possibility was added as a side effect
of commit b3ca9b02b00704 ("net: fix multithreaded signal handling in
unix recv routines").

To hit this bug, you need to be a bit unlucky, as the u->readlock
mutex is usually held for very small periods.

Fixes: b3ca9b02b00704 ("net: fix multithreaded signal handling in unix recv routines")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Rainer Weikusat <rweikusat@mobileactivedefense.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
net/unix/af_unix.c