Skip to content

Commit

Permalink
9p: use copy of the options value instead of original
Browse files Browse the repository at this point in the history
v9fs_parse_options function uses strsep which modifies the value of the
v9ses->options field. That modified value is later passed to the function
that creates the transport potentially making the transport creation
function to fail.

This patch creates a copy of v9ses->option field that v9fs_parse_options
function uses instead of the original value.

Signed-off-by: Latchesar Ionkov <lucho@ionkov.net>
Acked-by: Eric Van Hensbergen <ericvh@gmail.com>
  • Loading branch information
lionkov authored and ericvh committed Nov 6, 2007
1 parent dda6b02 commit 8999e04
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions fs/9p/v9fs.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ static match_table_t tokens = {

static void v9fs_parse_options(struct v9fs_session_info *v9ses)
{
char *options = v9ses->options;
char *options;
substring_t args[MAX_OPT_ARGS];
char *p;
int option;
Expand All @@ -96,9 +96,10 @@ static void v9fs_parse_options(struct v9fs_session_info *v9ses)
v9ses->cache = 0;
v9ses->trans = v9fs_default_trans();

if (!options)
if (!v9ses->options)
return;

options = kstrdup(v9ses->options, GFP_KERNEL);
while ((p = strsep(&options, ",")) != NULL) {
int token;
if (!*p)
Expand Down Expand Up @@ -169,6 +170,7 @@ static void v9fs_parse_options(struct v9fs_session_info *v9ses)
continue;
}
}
kfree(options);
}

/**
Expand Down

0 comments on commit 8999e04

Please sign in to comment.