Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs: 9p: add missing end-of-options record for trans_fd 9p: return NULL when trans not found 9p: use copy of the options value instead of original 9p: fix memory leak in v9fs_get_sb
This commit is contained in:
commit
65d3a68af5
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -169,6 +170,7 @@ static void v9fs_parse_options(struct v9fs_session_info *v9ses)
|
|||
continue;
|
||||
}
|
||||
}
|
||||
kfree(options);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -119,6 +119,7 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags,
|
|||
|
||||
P9_DPRINTK(P9_DEBUG_VFS, " \n");
|
||||
|
||||
st = NULL;
|
||||
v9ses = kzalloc(sizeof(struct v9fs_session_info), GFP_KERNEL);
|
||||
if (!v9ses)
|
||||
return -ENOMEM;
|
||||
|
@ -164,10 +165,12 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags,
|
|||
root->d_inode->i_ino = v9fs_qid2ino(&st->qid);
|
||||
v9fs_stat2inode(st, root->d_inode, sb);
|
||||
v9fs_fid_add(root, fid);
|
||||
kfree(st);
|
||||
|
||||
return simple_set_mnt(mnt, sb);
|
||||
|
||||
error:
|
||||
kfree(st);
|
||||
if (fid)
|
||||
p9_client_clunk(fid);
|
||||
|
||||
|
|
|
@ -76,9 +76,9 @@ struct p9_trans_module *v9fs_match_trans(const substring_t *name)
|
|||
list_for_each(p, &v9fs_trans_list) {
|
||||
t = list_entry(p, struct p9_trans_module, list);
|
||||
if (strncmp(t->name, name->from, name->to-name->from) == 0)
|
||||
break;
|
||||
return t;
|
||||
}
|
||||
return t;
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(v9fs_match_trans);
|
||||
|
||||
|
|
|
@ -62,13 +62,14 @@ struct p9_trans_fd {
|
|||
|
||||
enum {
|
||||
/* Options that take integer arguments */
|
||||
Opt_port, Opt_rfdno, Opt_wfdno,
|
||||
Opt_port, Opt_rfdno, Opt_wfdno, Opt_err,
|
||||
};
|
||||
|
||||
static match_table_t tokens = {
|
||||
{Opt_port, "port=%u"},
|
||||
{Opt_rfdno, "rfdno=%u"},
|
||||
{Opt_wfdno, "wfdno=%u"},
|
||||
{Opt_err, NULL},
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue