Commit 1042cab8 authored by Ursula Braun's avatar Ursula Braun Committed by David S. Miller

af_iucv: avoid path quiesce of severed path in shutdown()

An af_iucv stress test showed -EPIPE results for sendmsg()
calls. They are caused by quiescing a path even though it has
been already severed by peer. For IUCV transport shutdown()
consists of 2 steps:
(1) sending the shutdown message to peer
(2) quiescing the iucv path
If the iucv path between these 2 steps is severed due to peer
closing the path, the quiesce step is no longer needed.
Signed-off-by: default avatarUrsula Braun <ursula.braun@de.ibm.com>
Signed-off-by: default avatarFrank Blaschka <blaschka@linux.vnet.ibm.com>
Reported-by: default avatarPhilipp Hachtmann <phacht@linux.vnet.ibm.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 45cbb2e4
...@@ -1542,7 +1542,8 @@ static int iucv_sock_shutdown(struct socket *sock, int how) ...@@ -1542,7 +1542,8 @@ static int iucv_sock_shutdown(struct socket *sock, int how)
sk->sk_shutdown |= how; sk->sk_shutdown |= how;
if (how == RCV_SHUTDOWN || how == SHUTDOWN_MASK) { if (how == RCV_SHUTDOWN || how == SHUTDOWN_MASK) {
if (iucv->transport == AF_IUCV_TRANS_IUCV) { if ((iucv->transport == AF_IUCV_TRANS_IUCV) &&
iucv->path) {
err = pr_iucv->path_quiesce(iucv->path, NULL); err = pr_iucv->path_quiesce(iucv->path, NULL);
if (err) if (err)
err = -ENOTCONN; err = -ENOTCONN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment