Loading fs/cifs/connect.c +15 −6 Original line number Diff line number Diff line Loading @@ -2855,19 +2855,28 @@ cifs_cleanup_volume_info(struct smb_vol **pvolume_info) /* build_path_to_root returns full path to root when * we do not have an exiting connection (tcon) */ static char * build_unc_path_to_root(const struct smb_vol *volume_info, build_unc_path_to_root(const struct smb_vol *vol, const struct cifs_sb_info *cifs_sb) { char *full_path; char *full_path, *pos; unsigned int pplen = vol->prepath ? strlen(vol->prepath) : 0; unsigned int unc_len = strnlen(vol->UNC, MAX_TREE_SIZE + 1); int unc_len = strnlen(volume_info->UNC, MAX_TREE_SIZE + 1); full_path = kmalloc(unc_len + 1, GFP_KERNEL); full_path = kmalloc(unc_len + pplen + 1, GFP_KERNEL); if (full_path == NULL) return ERR_PTR(-ENOMEM); strncpy(full_path, volume_info->UNC, unc_len); full_path[unc_len] = 0; /* add trailing null */ strncpy(full_path, vol->UNC, unc_len); pos = full_path + unc_len; if (pplen) { strncpy(pos, vol->prepath, pplen); pos += pplen; } *pos = '\0'; /* add trailing null */ convert_delimiter(full_path, CIFS_DIR_SEP(cifs_sb)); cFYI(1, "%s: full_path=%s", __func__, full_path); return full_path; } Loading Loading
fs/cifs/connect.c +15 −6 Original line number Diff line number Diff line Loading @@ -2855,19 +2855,28 @@ cifs_cleanup_volume_info(struct smb_vol **pvolume_info) /* build_path_to_root returns full path to root when * we do not have an exiting connection (tcon) */ static char * build_unc_path_to_root(const struct smb_vol *volume_info, build_unc_path_to_root(const struct smb_vol *vol, const struct cifs_sb_info *cifs_sb) { char *full_path; char *full_path, *pos; unsigned int pplen = vol->prepath ? strlen(vol->prepath) : 0; unsigned int unc_len = strnlen(vol->UNC, MAX_TREE_SIZE + 1); int unc_len = strnlen(volume_info->UNC, MAX_TREE_SIZE + 1); full_path = kmalloc(unc_len + 1, GFP_KERNEL); full_path = kmalloc(unc_len + pplen + 1, GFP_KERNEL); if (full_path == NULL) return ERR_PTR(-ENOMEM); strncpy(full_path, volume_info->UNC, unc_len); full_path[unc_len] = 0; /* add trailing null */ strncpy(full_path, vol->UNC, unc_len); pos = full_path + unc_len; if (pplen) { strncpy(pos, vol->prepath, pplen); pos += pplen; } *pos = '\0'; /* add trailing null */ convert_delimiter(full_path, CIFS_DIR_SEP(cifs_sb)); cFYI(1, "%s: full_path=%s", __func__, full_path); return full_path; } Loading