aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/9p/client.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/9p/client.c b/net/9p/client.c
index 776618cd2be5..6efbb334c3ad 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -740,10 +740,18 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
740 c->status = Disconnected; 740 c->status = Disconnected;
741 goto reterr; 741 goto reterr;
742 } 742 }
743again:
743 /* Wait for the response */ 744 /* Wait for the response */
744 err = wait_event_interruptible(*req->wq, 745 err = wait_event_interruptible(*req->wq,
745 req->status >= REQ_STATUS_RCVD); 746 req->status >= REQ_STATUS_RCVD);
746 747
748 if ((err == -ERESTARTSYS) && (c->status == Connected)
749 && (type == P9_TFLUSH)) {
750 sigpending = 1;
751 clear_thread_flag(TIF_SIGPENDING);
752 goto again;
753 }
754
747 if (req->status == REQ_STATUS_ERROR) { 755 if (req->status == REQ_STATUS_ERROR) {
748 p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err); 756 p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err);
749 err = req->t_err; 757 err = req->t_err;