diff options
author | Jeff Layton <jlayton@redhat.com> | 2012-11-26 11:09:57 -0500 |
---|---|---|
committer | Steve French <smfrench@gmail.com> | 2012-12-05 14:27:31 -0500 |
commit | 6ee9542a8701a906dbe5141bf1e1ad395d957222 (patch) | |
tree | ae01aed2b9e2f43eb218ef131c9dfeac25c7c45c /fs/cifs | |
parent | 9fa114f74feb140ac93e5983428c8f9312ffd6c2 (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.c | 7 |
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 | ||