|
@@ -184,10 +184,20 @@ static int v9fs_parse_options(struct v9fs_session_info *v9ses, char *opts)
|
|
|
v9ses->afid = option;
|
|
|
break;
|
|
|
case Opt_uname:
|
|
|
- match_strlcpy(v9ses->uname, &args[0], PATH_MAX);
|
|
|
+ kfree(v9ses->uname);
|
|
|
+ v9ses->uname = match_strdup(&args[0]);
|
|
|
+ if (!v9ses->uname) {
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto free_and_return;
|
|
|
+ }
|
|
|
break;
|
|
|
case Opt_remotename:
|
|
|
- match_strlcpy(v9ses->aname, &args[0], PATH_MAX);
|
|
|
+ kfree(v9ses->aname);
|
|
|
+ v9ses->aname = match_strdup(&args[0]);
|
|
|
+ if (!v9ses->aname) {
|
|
|
+ ret = -ENOMEM;
|
|
|
+ goto free_and_return;
|
|
|
+ }
|
|
|
break;
|
|
|
case Opt_nodevmap:
|
|
|
v9ses->nodev = 1;
|
|
@@ -287,21 +297,21 @@ struct p9_fid *v9fs_session_init(struct v9fs_session_info *v9ses,
|
|
|
struct p9_fid *fid;
|
|
|
int rc;
|
|
|
|
|
|
- v9ses->uname = __getname();
|
|
|
+ v9ses->uname = kstrdup(V9FS_DEFUSER, GFP_KERNEL);
|
|
|
if (!v9ses->uname)
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
|
|
|
- v9ses->aname = __getname();
|
|
|
+ v9ses->aname = kstrdup(V9FS_DEFANAME, GFP_KERNEL);
|
|
|
if (!v9ses->aname) {
|
|
|
- __putname(v9ses->uname);
|
|
|
+ kfree(v9ses->uname);
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
}
|
|
|
init_rwsem(&v9ses->rename_sem);
|
|
|
|
|
|
rc = bdi_setup_and_register(&v9ses->bdi, "9p", BDI_CAP_MAP_COPY);
|
|
|
if (rc) {
|
|
|
- __putname(v9ses->aname);
|
|
|
- __putname(v9ses->uname);
|
|
|
+ kfree(v9ses->aname);
|
|
|
+ kfree(v9ses->uname);
|
|
|
return ERR_PTR(rc);
|
|
|
}
|
|
|
|
|
@@ -309,8 +319,6 @@ struct p9_fid *v9fs_session_init(struct v9fs_session_info *v9ses,
|
|
|
list_add(&v9ses->slist, &v9fs_sessionlist);
|
|
|
spin_unlock(&v9fs_sessionlist_lock);
|
|
|
|
|
|
- strcpy(v9ses->uname, V9FS_DEFUSER);
|
|
|
- strcpy(v9ses->aname, V9FS_DEFANAME);
|
|
|
v9ses->uid = ~0;
|
|
|
v9ses->dfltuid = V9FS_DEFUID;
|
|
|
v9ses->dfltgid = V9FS_DEFGID;
|
|
@@ -412,8 +420,8 @@ void v9fs_session_close(struct v9fs_session_info *v9ses)
|
|
|
kfree(v9ses->cachetag);
|
|
|
}
|
|
|
#endif
|
|
|
- __putname(v9ses->uname);
|
|
|
- __putname(v9ses->aname);
|
|
|
+ kfree(v9ses->uname);
|
|
|
+ kfree(v9ses->aname);
|
|
|
|
|
|
bdi_destroy(&v9ses->bdi);
|
|
|
|