Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55420c24 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

SUNRPC: Ensure we close the socket on EPIPE errors too...



As long as one task is holding the socket lock, then calls to
xprt_force_disconnect(xprt) will not succeed in shutting down the socket.
In particular, this would mean that a server initiated shutdown will not
succeed until the lock is relinquished.
In order to avoid the deadlock, we should ensure that xs_tcp_send_request()
closes the socket on EPIPE errors too.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent b61d59ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -726,10 +726,10 @@ static int xs_tcp_send_request(struct rpc_task *task)
		dprintk("RPC:       sendmsg returned unrecognized error %d\n",
			-status);
	case -ECONNRESET:
	case -EPIPE:
		xs_tcp_shutdown(xprt);
	case -ECONNREFUSED:
	case -ENOTCONN:
	case -EPIPE:
		clear_bit(SOCK_ASYNC_NOSPACE, &transport->sock->flags);
	}
out: