From mboxrd@z Thu Jan 1 00:00:00 1970 From: jiangyiwen Subject: Re: [V9fs-developer] [PATCH] net/9p: fix potential refcnt problem of trans module Date: Wed, 28 Mar 2018 10:10:08 +0800 Message-ID: <5ABAF980.5060406@huawei.com> References: <1522154942-57339-1-git-send-email-cgxu519@gmx.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit Cc: , To: Chengguang Xu , , , , Return-path: Received: from szxga07-in.huawei.com ([45.249.212.35]:56008 "EHLO huawei.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752453AbeC1CKR (ORCPT ); Tue, 27 Mar 2018 22:10:17 -0400 In-Reply-To: <1522154942-57339-1-git-send-email-cgxu519@gmx.com> Sender: netdev-owner@vger.kernel.org List-ID: On 2018/3/27 20:49, Chengguang Xu wrote: > When specifying trans_mod multiple times in a mount, > it may cause inaccurate refcount of trans module. Also, > in the error case of option parsing, we should put the > trans module if we have already got. > > Signed-off-by: Chengguang Xu > --- > net/9p/client.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/net/9p/client.c b/net/9p/client.c > index b433aff..7ccfb4b 100644 > --- a/net/9p/client.c > +++ b/net/9p/client.c > @@ -190,7 +190,9 @@ static int parse_opts(char *opts, struct p9_client *clnt) > p9_debug(P9_DEBUG_ERROR, > "problem allocating copy of trans arg\n"); > goto free_and_return; > - } > + } > + > + v9fs_put_trans(clnt->trans_mod); I think this should return error if using multiple times in a mount. > clnt->trans_mod = v9fs_get_trans_by_name(s); > if (clnt->trans_mod == NULL) { > pr_info("Could not find request transport: %s\n", > @@ -226,6 +228,7 @@ static int parse_opts(char *opts, struct p9_client *clnt) > } > > free_and_return: > + v9fs_put_trans(clnt->trans_mod); This looks good. > kfree(tmp_options); > return ret; > } >