aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2012-11-26 11:09:57 -0500
committerSteve French <smfrench@gmail.com>2012-12-05 14:27:31 -0500
commit6ee9542a8701a906dbe5141bf1e1ad395d957222 (patch)
treeae01aed2b9e2f43eb218ef131c9dfeac25c7c45c /fs/cifs
parent9fa114f74feb140ac93e5983428c8f9312ffd6c2 (diff)
cifs: always zero out smb_vol before parsing options
Currently, the code relies on the callers to do that and they all do, but this will ensure that it's always done. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <smfrench@gmail.com>
Diffstat (limited to 'fs/cifs')
-rw-r--r--fs/cifs/connect.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 87fa16549f27..290c13442f75 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1122,6 +1122,9 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
1122 separator[1] = 0; 1122 separator[1] = 0;
1123 delim = separator[0]; 1123 delim = separator[0];
1124 1124
1125 /* ensure we always start with zeroed-out smb_vol */
1126 memset(vol, 0, sizeof(*vol));
1127
1125 /* 1128 /*
1126 * does not have to be perfect mapping since field is 1129 * does not have to be perfect mapping since field is
1127 * informational, only used for servers that do not support 1130 * informational, only used for servers that do not support
@@ -3314,7 +3317,6 @@ expand_dfs_referral(const unsigned int xid, struct cifs_ses *ses,
3314 mdata = NULL; 3317 mdata = NULL;
3315 } else { 3318 } else {
3316 cleanup_volume_info_contents(volume_info); 3319 cleanup_volume_info_contents(volume_info);
3317 memset(volume_info, '\0', sizeof(*volume_info));
3318 rc = cifs_setup_volume_info(volume_info, mdata, 3320 rc = cifs_setup_volume_info(volume_info, mdata,
3319 fake_devname); 3321 fake_devname);
3320 } 3322 }
@@ -3336,7 +3338,6 @@ cifs_setup_volume_info(struct smb_vol *volume_info, char *mount_data,
3336 if (cifs_parse_mount_options(mount_data, devname, volume_info)) 3338 if (cifs_parse_mount_options(mount_data, devname, volume_info))
3337 return -EINVAL; 3339 return -EINVAL;
3338 3340
3339
3340 if (volume_info->nullauth) { 3341 if (volume_info->nullauth) {
3341 cFYI(1, "Anonymous login"); 3342 cFYI(1, "Anonymous login");
3342 kfree(volume_info->username); 3343 kfree(volume_info->username);
@@ -3373,7 +3374,7 @@ cifs_get_volume_info(char *mount_data, const char *devname)
3373 int rc; 3374 int rc;
3374 struct smb_vol *volume_info; 3375 struct smb_vol *volume_info;
3375 3376
3376 volume_info = kzalloc(sizeof(struct smb_vol), GFP_KERNEL); 3377 volume_info = kmalloc(sizeof(struct smb_vol), GFP_KERNEL);
3377 if (!volume_info) 3378 if (!volume_info)
3378 return ERR_PTR(-ENOMEM); 3379 return ERR_PTR(-ENOMEM);
3379 3380