diff options
| -rw-r--r-- | net/sunrpc/xprtsock.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 16aff8ddc16f..d5b54c020dec 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -2432,7 +2432,12 @@ static void xs_tcp_setup_socket(struct work_struct *work)  	case -ENETUNREACH:  	case -EADDRINUSE:  	case -ENOBUFS: -		/* retry with existing socket, after a delay */ +		/* +		 * xs_tcp_force_close() wakes tasks with -EIO. +		 * We need to wake them first to ensure the +		 * correct error code. +		 */ +		xprt_wake_pending_tasks(xprt, status);  		xs_tcp_force_close(xprt);  		goto out;  	}  | 

