diff options
author | Jeff Layton <jlayton@redhat.com> | 2012-11-26 11:09:57 -0500 |
---|---|---|
committer | Steve French <smfrench@gmail.com> | 2012-12-05 13:27:31 -0600 |
commit | 6ee9542a8701a906dbe5141bf1e1ad395d957222 (patch) | |
tree | ae01aed2b9e2f43eb218ef131c9dfeac25c7c45c /fs | |
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')
-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 87fa16549f2..290c13442f7 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, separator[1] = 0; delim = separator[0]; + /* ensure we always start with zeroed-out smb_vol */ + memset(vol, 0, sizeof(*vol)); + /* * does not have to be perfect mapping since field is * informational, only used for servers that do not support @@ -3314,7 +3317,6 @@ expand_dfs_referral(const unsigned int xid, struct cifs_ses *ses, mdata = NULL; } else { cleanup_volume_info_contents(volume_info); - memset(volume_info, '\0', sizeof(*volume_info)); rc = cifs_setup_volume_info(volume_info, mdata, fake_devname); } @@ -3336,7 +3338,6 @@ cifs_setup_volume_info(struct smb_vol *volume_info, char *mount_data, if (cifs_parse_mount_options(mount_data, devname, volume_info)) return -EINVAL; - if (volume_info->nullauth) { cFYI(1, "Anonymous login"); kfree(volume_info->username); @@ -3373,7 +3374,7 @@ cifs_get_volume_info(char *mount_data, const char *devname) int rc; struct smb_vol *volume_info; - volume_info = kzalloc(sizeof(struct smb_vol), GFP_KERNEL); + volume_info = kmalloc(sizeof(struct smb_vol), GFP_KERNEL); if (!volume_info) return ERR_PTR(-ENOMEM); |