Loading fs/cifs/cifsfs.c +2 −2 Original line number Diff line number Diff line Loading @@ -549,7 +549,7 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb) char *s, *p; char sep; full_path = cifs_build_path_to_root(vol, cifs_sb, full_path = build_path_to_root(vol, cifs_sb, cifs_sb_master_tcon(cifs_sb)); if (full_path == NULL) return ERR_PTR(-ENOMEM); Loading fs/cifs/cifsglob.h +13 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,7 @@ struct cifs_ses; struct cifs_tcon; struct dfs_info3_param; struct cifs_fattr; struct smb_vol; struct smb_version_operations { int (*send_cancel)(struct TCP_Server_Info *, void *, Loading Loading @@ -227,6 +228,9 @@ struct smb_version_operations { int (*get_srv_inum)(const unsigned int, struct cifs_tcon *, struct cifs_sb_info *, const char *, u64 *uniqueid, FILE_ALL_INFO *); /* build a full path to the root of the mount */ char * (*build_path_to_root)(struct smb_vol *, struct cifs_sb_info *, struct cifs_tcon *); }; struct smb_version_values { Loading Loading @@ -803,6 +807,15 @@ convert_delimiter(char *path, char delim) } } static inline char * build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon) { if (!vol->ops->build_path_to_root) return NULL; return vol->ops->build_path_to_root(vol, cifs_sb, tcon); } #ifdef CONFIG_CIFS_STATS #define cifs_stats_inc atomic_inc Loading fs/cifs/cifsproto.h +0 −3 Original line number Diff line number Diff line Loading @@ -57,9 +57,6 @@ extern int init_cifs_idmap(void); extern void exit_cifs_idmap(void); extern void cifs_destroy_idmaptrees(void); extern char *build_path_from_dentry(struct dentry *); extern char *cifs_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon); extern char *build_wildcard_path_from_dentry(struct dentry *direntry); extern char *cifs_compose_mount_options(const char *sb_mountdata, const char *fullpath, const struct dfs_info3_param *ref, Loading fs/cifs/connect.c +1 −1 Original line number Diff line number Diff line Loading @@ -3684,7 +3684,7 @@ cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info) goto mount_fail_check; } /* build_path_to_root works only when we have a valid tcon */ full_path = cifs_build_path_to_root(volume_info, cifs_sb, tcon); full_path = build_path_to_root(volume_info, cifs_sb, tcon); if (full_path == NULL) { rc = -ENOMEM; goto mount_fail_check; Loading fs/cifs/inode.c +0 −32 Original line number Diff line number Diff line Loading @@ -731,38 +731,6 @@ static const struct inode_operations cifs_ipc_inode_ops = { .lookup = cifs_lookup, }; char *cifs_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon) { int pplen = vol->prepath ? strlen(vol->prepath) : 0; int dfsplen; char *full_path = NULL; /* if no prefix path, simply set path to the root of share to "" */ if (pplen == 0) { full_path = kmalloc(1, GFP_KERNEL); if (full_path) full_path[0] = 0; return full_path; } if (tcon->Flags & SMB_SHARE_IS_IN_DFS) dfsplen = strnlen(tcon->treeName, MAX_TREE_SIZE + 1); else dfsplen = 0; full_path = kmalloc(dfsplen + pplen + 1, GFP_KERNEL); if (full_path == NULL) return full_path; if (dfsplen) strncpy(full_path, tcon->treeName, dfsplen); strncpy(full_path + dfsplen, vol->prepath, pplen); convert_delimiter(full_path, CIFS_DIR_SEP(cifs_sb)); full_path[dfsplen + pplen] = 0; /* add trailing null */ return full_path; } static int cifs_find_inode(struct inode *inode, void *opaque) { Loading Loading
fs/cifs/cifsfs.c +2 −2 Original line number Diff line number Diff line Loading @@ -549,7 +549,7 @@ cifs_get_root(struct smb_vol *vol, struct super_block *sb) char *s, *p; char sep; full_path = cifs_build_path_to_root(vol, cifs_sb, full_path = build_path_to_root(vol, cifs_sb, cifs_sb_master_tcon(cifs_sb)); if (full_path == NULL) return ERR_PTR(-ENOMEM); Loading
fs/cifs/cifsglob.h +13 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,7 @@ struct cifs_ses; struct cifs_tcon; struct dfs_info3_param; struct cifs_fattr; struct smb_vol; struct smb_version_operations { int (*send_cancel)(struct TCP_Server_Info *, void *, Loading Loading @@ -227,6 +228,9 @@ struct smb_version_operations { int (*get_srv_inum)(const unsigned int, struct cifs_tcon *, struct cifs_sb_info *, const char *, u64 *uniqueid, FILE_ALL_INFO *); /* build a full path to the root of the mount */ char * (*build_path_to_root)(struct smb_vol *, struct cifs_sb_info *, struct cifs_tcon *); }; struct smb_version_values { Loading Loading @@ -803,6 +807,15 @@ convert_delimiter(char *path, char delim) } } static inline char * build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon) { if (!vol->ops->build_path_to_root) return NULL; return vol->ops->build_path_to_root(vol, cifs_sb, tcon); } #ifdef CONFIG_CIFS_STATS #define cifs_stats_inc atomic_inc Loading
fs/cifs/cifsproto.h +0 −3 Original line number Diff line number Diff line Loading @@ -57,9 +57,6 @@ extern int init_cifs_idmap(void); extern void exit_cifs_idmap(void); extern void cifs_destroy_idmaptrees(void); extern char *build_path_from_dentry(struct dentry *); extern char *cifs_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon); extern char *build_wildcard_path_from_dentry(struct dentry *direntry); extern char *cifs_compose_mount_options(const char *sb_mountdata, const char *fullpath, const struct dfs_info3_param *ref, Loading
fs/cifs/connect.c +1 −1 Original line number Diff line number Diff line Loading @@ -3684,7 +3684,7 @@ cifs_mount(struct cifs_sb_info *cifs_sb, struct smb_vol *volume_info) goto mount_fail_check; } /* build_path_to_root works only when we have a valid tcon */ full_path = cifs_build_path_to_root(volume_info, cifs_sb, tcon); full_path = build_path_to_root(volume_info, cifs_sb, tcon); if (full_path == NULL) { rc = -ENOMEM; goto mount_fail_check; Loading
fs/cifs/inode.c +0 −32 Original line number Diff line number Diff line Loading @@ -731,38 +731,6 @@ static const struct inode_operations cifs_ipc_inode_ops = { .lookup = cifs_lookup, }; char *cifs_build_path_to_root(struct smb_vol *vol, struct cifs_sb_info *cifs_sb, struct cifs_tcon *tcon) { int pplen = vol->prepath ? strlen(vol->prepath) : 0; int dfsplen; char *full_path = NULL; /* if no prefix path, simply set path to the root of share to "" */ if (pplen == 0) { full_path = kmalloc(1, GFP_KERNEL); if (full_path) full_path[0] = 0; return full_path; } if (tcon->Flags & SMB_SHARE_IS_IN_DFS) dfsplen = strnlen(tcon->treeName, MAX_TREE_SIZE + 1); else dfsplen = 0; full_path = kmalloc(dfsplen + pplen + 1, GFP_KERNEL); if (full_path == NULL) return full_path; if (dfsplen) strncpy(full_path, tcon->treeName, dfsplen); strncpy(full_path + dfsplen, vol->prepath, pplen); convert_delimiter(full_path, CIFS_DIR_SEP(cifs_sb)); full_path[dfsplen + pplen] = 0; /* add trailing null */ return full_path; } static int cifs_find_inode(struct inode *inode, void *opaque) { Loading