Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65d3a68a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* '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
parents 2658770b 55762690
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -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);
}

/**
+3 −0
Original line number Diff line number Diff line
@@ -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);

+2 −2
Original line number Diff line number Diff line
@@ -76,10 +76,10 @@ 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 NULL;
}
EXPORT_SYMBOL(v9fs_match_trans);

/**
+2 −1
Original line number Diff line number Diff line
@@ -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},
};

/**