diff options
Diffstat (limited to 'net/9p/client.c')
-rw-r--r-- | net/9p/client.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/net/9p/client.c b/net/9p/client.c index d18a0b22f62c..8b93cae2d11d 100644 --- a/net/9p/client.c +++ b/net/9p/client.c | |||
@@ -658,12 +658,18 @@ static int p9_client_flush(struct p9_client *c, struct p9_req_t *oldreq) | |||
658 | 658 | ||
659 | /* | 659 | /* |
660 | * if we haven't received a response for oldreq, | 660 | * if we haven't received a response for oldreq, |
661 | * remove it from the list. | 661 | * remove it from the list, and notify the transport |
662 | * layer that the reply will never arrive. | ||
662 | */ | 663 | */ |
663 | spin_lock(&c->lock); | 664 | spin_lock(&c->lock); |
664 | if (oldreq->status == REQ_STATUS_FLSH) | 665 | if (oldreq->status == REQ_STATUS_FLSH) { |
665 | list_del(&oldreq->req_list); | 666 | list_del(&oldreq->req_list); |
666 | spin_unlock(&c->lock); | 667 | spin_unlock(&c->lock); |
668 | if (c->trans_mod->cancelled) | ||
669 | c->trans_mod->cancelled(c, req); | ||
670 | } else { | ||
671 | spin_unlock(&c->lock); | ||
672 | } | ||
667 | 673 | ||
668 | p9_free_req(c, req); | 674 | p9_free_req(c, req); |
669 | return 0; | 675 | return 0; |