diff options
Diffstat (limited to 'net/9p/client.c')
| -rw-r--r-- | net/9p/client.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/9p/client.c b/net/9p/client.c index dc6f2f26d023..9eb72505308f 100644 --- a/net/9p/client.c +++ b/net/9p/client.c | |||
| @@ -331,8 +331,10 @@ static void p9_tag_cleanup(struct p9_client *c) | |||
| 331 | } | 331 | } |
| 332 | } | 332 | } |
| 333 | 333 | ||
| 334 | if (c->tagpool) | 334 | if (c->tagpool) { |
| 335 | p9_idpool_put(0, c->tagpool); /* free reserved tag 0 */ | ||
| 335 | p9_idpool_destroy(c->tagpool); | 336 | p9_idpool_destroy(c->tagpool); |
| 337 | } | ||
| 336 | 338 | ||
| 337 | /* free requests associated with tags */ | 339 | /* free requests associated with tags */ |
| 338 | for (row = 0; row < (c->max_tag/P9_ROW_MAXTAG); row++) { | 340 | for (row = 0; row < (c->max_tag/P9_ROW_MAXTAG); row++) { |
| @@ -944,6 +946,7 @@ struct p9_fid *p9_client_walk(struct p9_fid *oldfid, int nwname, char **wnames, | |||
| 944 | int16_t nwqids, count; | 946 | int16_t nwqids, count; |
| 945 | 947 | ||
| 946 | err = 0; | 948 | err = 0; |
| 949 | wqids = NULL; | ||
| 947 | clnt = oldfid->clnt; | 950 | clnt = oldfid->clnt; |
| 948 | if (clone) { | 951 | if (clone) { |
| 949 | fid = p9_fid_create(clnt); | 952 | fid = p9_fid_create(clnt); |
| @@ -994,9 +997,11 @@ struct p9_fid *p9_client_walk(struct p9_fid *oldfid, int nwname, char **wnames, | |||
| 994 | else | 997 | else |
| 995 | fid->qid = oldfid->qid; | 998 | fid->qid = oldfid->qid; |
| 996 | 999 | ||
| 1000 | kfree(wqids); | ||
| 997 | return fid; | 1001 | return fid; |
| 998 | 1002 | ||
| 999 | clunk_fid: | 1003 | clunk_fid: |
| 1004 | kfree(wqids); | ||
| 1000 | p9_client_clunk(fid); | 1005 | p9_client_clunk(fid); |
| 1001 | fid = NULL; | 1006 | fid = NULL; |
| 1002 | 1007 | ||
