diff options
Diffstat (limited to 'net/9p/trans_fd.c')
| -rw-r--r-- | net/9p/trans_fd.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index be1cb909d8c..31d0b05582a 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c @@ -714,7 +714,7 @@ static int parse_opts(char *params, struct p9_fd_opts *opts)  	char *p;  	substring_t args[MAX_OPT_ARGS];  	int option; -	char *options; +	char *options, *tmp_options;  	int ret;  	opts->port = P9_PORT; @@ -724,12 +724,13 @@ static int parse_opts(char *params, struct p9_fd_opts *opts)  	if (!params)  		return 0; -	options = kstrdup(params, GFP_KERNEL); -	if (!options) { +	tmp_options = kstrdup(params, GFP_KERNEL); +	if (!tmp_options) {  		P9_DPRINTK(P9_DEBUG_ERROR,  				"failed to allocate copy of option string\n");  		return -ENOMEM;  	} +	options = tmp_options;  	while ((p = strsep(&options, ",")) != NULL) {  		int token; @@ -760,7 +761,8 @@ static int parse_opts(char *params, struct p9_fd_opts *opts)  			continue;  		}  	} -	kfree(options); + +	kfree(tmp_options);  	return 0;  }  |