Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755402Ab1EHRv2 (ORCPT ); Sun, 8 May 2011 13:51:28 -0400 Received: from e37.co.us.ibm.com ([32.97.110.158]:48521 "EHLO e37.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754977Ab1EHRv1 (ORCPT ); Sun, 8 May 2011 13:51:27 -0400 Message-ID: <4DC6D816.9060507@linux.vnet.ibm.com> Date: Sun, 08 May 2011 10:51:18 -0700 From: Venkateswararao Jujjuri User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 To: Prem Karat CC: v9fs-developer@lists.sourceforge.net, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [V9fs-developer] [PATCH] fs/9p: Fix invalid mount options/args References: <20110506125417.GD6759@d6fc318.ibm.com> In-Reply-To: <20110506125417.GD6759@d6fc318.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3136 Lines: 103 On 05/06/2011 05:54 AM, Prem Karat wrote: > fs/9p: Fix invalid mount options/args > > Without this fix, if any invalid mount options/args are passed while mouting the 9p fs, > no error (-EINVAL) is returned and default arg value is assigned. > > This fix returns -EINVAL when an invalid arguement is found while parsing mount options. Prem, Thanks for the patch. Quick question..any reason why you have a new function for cache, and in-line here? Thanks, JV > Signed-off-by: Prem Karat > --- > fs/9p/v9fs.c | 43 ++++++++++++++++++++++++++++++++++--------- > 1 files changed, 34 insertions(+), 9 deletions(-) > > diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c > index c82b017..033c23e 100644 > --- a/fs/9p/v9fs.c > +++ b/fs/9p/v9fs.c > @@ -78,6 +78,25 @@ static const match_table_t tokens = { > {Opt_err, NULL} > }; > > +/* Interpret mount options for cache mode */ > +static int get_cache_mode(char *s) > +{ > + int version = -EINVAL; > + > + if (!strcmp(s, "loose")) { > + version = CACHE_LOOSE; > + P9_DPRINTK(P9_DEBUG_9P, "Cache mode: loose\n"); > + } else if (!strcmp(s, "fscache")) { > + version = CACHE_FSCACHE; > + P9_DPRINTK(P9_DEBUG_9P, "Cache mode: fscache\n"); > + } else if (!strcmp(s, "none")) { > + version = CACHE_NONE; > + P9_DPRINTK(P9_DEBUG_9P, "Cache mode: none\n"); > + } else > + printk(KERN_INFO "9p: Unknown Cache mode %s.\n", s); > + return version; > +} > + > /** > * v9fs_parse_options - parse mount options into session structure > * @v9ses: existing v9fs session information > @@ -97,7 +116,7 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts) > /* setup defaults */ > v9ses->afid = ~0; > v9ses->debug = 0; > - v9ses->cache = 0; > + v9ses->cache = CACHE_NONE; > #ifdef CONFIG_9P_FSCACHE > v9ses->cachetag = NULL; > #endif > @@ -171,13 +190,13 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts) > "problem allocating copy of cache arg\n"); > goto free_and_return; > } > + ret = get_cache_mode(s); > + if (ret == -EINVAL) { > + kfree(s); > + goto free_and_return; > + } > > - if (strcmp(s, "loose") == 0) > - v9ses->cache = CACHE_LOOSE; > - else if (strcmp(s, "fscache") == 0) > - v9ses->cache = CACHE_FSCACHE; > - else > - v9ses->cache = CACHE_NONE; > + v9ses->cache = ret; > kfree(s); > break; > > @@ -200,9 +219,15 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts) > } else { > v9ses->flags |= V9FS_ACCESS_SINGLE; > v9ses->uid = simple_strtoul(s,&e, 10); > - if (*e != '\0') > - v9ses->uid = ~0; > + if (*e != '\0') { > + ret = -EINVAL; > + printk(KERN_INFO "9p: Unknown access " > + "argument %s.\n", s); > + kfree(s); > + goto free_and_return; > + } > } > + > kfree(s); > break; > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/