diff options
Diffstat (limited to 'net/9p/client.c')
-rw-r--r-- | net/9p/client.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/net/9p/client.c b/net/9p/client.c index 867031934f75..f2d07ef9e6a4 100644 --- a/net/9p/client.c +++ b/net/9p/client.c | |||
@@ -268,6 +268,27 @@ static void p9_tag_cleanup(struct p9_client *c) | |||
268 | c->max_tag = 0; | 268 | c->max_tag = 0; |
269 | } | 269 | } |
270 | 270 | ||
271 | /** | ||
272 | * p9_free_req - free a request and clean-up as necessary | ||
273 | * c: client state | ||
274 | * r: request to release | ||
275 | * | ||
276 | */ | ||
277 | |||
278 | void p9_free_req(struct p9_client *c, struct p9_req_t *r) | ||
279 | { | ||
280 | r->flush_tag = P9_NOTAG; | ||
281 | r->status = REQ_STATUS_IDLE; | ||
282 | if (r->tc->tag != P9_NOTAG && p9_idpool_check(r->tc->tag, c->tagpool)) | ||
283 | p9_idpool_put(r->tc->tag, c->tagpool); | ||
284 | |||
285 | /* if this was a flush request we have to free response fcall */ | ||
286 | if (r->tc->id == P9_TFLUSH) { | ||
287 | kfree(r->tc); | ||
288 | kfree(r->rc); | ||
289 | } | ||
290 | } | ||
291 | |||
271 | static struct p9_fid *p9_fid_create(struct p9_client *clnt) | 292 | static struct p9_fid *p9_fid_create(struct p9_client *clnt) |
272 | { | 293 | { |
273 | int err; | 294 | int err; |