cifs: Use kstrndup for cifs_sb->mountdata

A relatively minor nit, but also clarified the "consensus" from the
preceding comments that it is in fact better to try for the kstrdup
early and cleanup while cleaning up is still a simple thing to do.

Reviewed-By: Steve French <smfrench@gmail.com>
Signed-off-by: Sean Finney <seanius@seanius.net>
Signed-off-by: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
Sean Finney 2011-04-11 13:19:34 +00:00 committed by Steve French
parent 046462abca
commit 5167f11ec9

View file

@ -129,24 +129,19 @@ cifs_read_super(struct super_block *sb, void *data,
cifs_sb->bdi.ra_pages = default_backing_dev_info.ra_pages; cifs_sb->bdi.ra_pages = default_backing_dev_info.ra_pages;
#ifdef CONFIG_CIFS_DFS_UPCALL #ifdef CONFIG_CIFS_DFS_UPCALL
/* copy mount params to sb for use in submounts */ /*
/* BB: should we move this after the mount so we * Copy mount params to sb for use in submounts. Better to do
* do not have to do the copy on failed mounts? * the copy here and deal with the error before cleanup gets
* BB: May be it is better to do simple copy before * complicated post-mount.
* complex operation (mount), and in case of fail */
* just exit instead of doing mount and attempting
* undo it if this copy fails?*/
if (data) { if (data) {
int len = strlen(data); cifs_sb->mountdata = kstrndup(data, PAGE_SIZE, GFP_KERNEL);
cifs_sb->mountdata = kzalloc(len + 1, GFP_KERNEL);
if (cifs_sb->mountdata == NULL) { if (cifs_sb->mountdata == NULL) {
bdi_destroy(&cifs_sb->bdi); bdi_destroy(&cifs_sb->bdi);
kfree(sb->s_fs_info); kfree(sb->s_fs_info);
sb->s_fs_info = NULL; sb->s_fs_info = NULL;
return -ENOMEM; return -ENOMEM;
} }
strncpy(cifs_sb->mountdata, data, len + 1);
cifs_sb->mountdata[len] = '\0';
} }
#endif #endif