diff options
Diffstat (limited to 'fs/cifs/cifs_dfs_ref.c')
| -rw-r--r-- | fs/cifs/cifs_dfs_ref.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index 3bb11be8b6a8..606912d8f2a8 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c | |||
| @@ -55,7 +55,7 @@ void cifs_dfs_release_automount_timer(void) | |||
| 55 | * i.e. strips from UNC trailing path that is not part of share | 55 | * i.e. strips from UNC trailing path that is not part of share |
| 56 | * name and fixup missing '\' in the begining of DFS node refferal | 56 | * name and fixup missing '\' in the begining of DFS node refferal |
| 57 | * if neccessary. | 57 | * if neccessary. |
| 58 | * Returns pointer to share name on success or NULL on error. | 58 | * Returns pointer to share name on success or ERR_PTR on error. |
| 59 | * Caller is responsible for freeing returned string. | 59 | * Caller is responsible for freeing returned string. |
| 60 | */ | 60 | */ |
| 61 | static char *cifs_get_share_name(const char *node_name) | 61 | static char *cifs_get_share_name(const char *node_name) |
| @@ -68,7 +68,7 @@ static char *cifs_get_share_name(const char *node_name) | |||
| 68 | UNC = kmalloc(len+2 /*for term null and additional \ if it's missed */, | 68 | UNC = kmalloc(len+2 /*for term null and additional \ if it's missed */, |
| 69 | GFP_KERNEL); | 69 | GFP_KERNEL); |
| 70 | if (!UNC) | 70 | if (!UNC) |
| 71 | return NULL; | 71 | return ERR_PTR(-ENOMEM); |
| 72 | 72 | ||
| 73 | /* get share name and server name */ | 73 | /* get share name and server name */ |
| 74 | if (node_name[1] != '\\') { | 74 | if (node_name[1] != '\\') { |
| @@ -87,7 +87,7 @@ static char *cifs_get_share_name(const char *node_name) | |||
| 87 | cERROR(1, ("%s: no server name end in node name: %s", | 87 | cERROR(1, ("%s: no server name end in node name: %s", |
| 88 | __func__, node_name)); | 88 | __func__, node_name)); |
| 89 | kfree(UNC); | 89 | kfree(UNC); |
| 90 | return NULL; | 90 | return ERR_PTR(-EINVAL); |
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | /* find sharename end */ | 93 | /* find sharename end */ |
| @@ -133,6 +133,12 @@ char *cifs_compose_mount_options(const char *sb_mountdata, | |||
| 133 | return ERR_PTR(-EINVAL); | 133 | return ERR_PTR(-EINVAL); |
| 134 | 134 | ||
| 135 | *devname = cifs_get_share_name(ref->node_name); | 135 | *devname = cifs_get_share_name(ref->node_name); |
| 136 | if (IS_ERR(*devname)) { | ||
| 137 | rc = PTR_ERR(*devname); | ||
| 138 | *devname = NULL; | ||
| 139 | goto compose_mount_options_err; | ||
| 140 | } | ||
| 141 | |||
| 136 | rc = dns_resolve_server_name_to_ip(*devname, &srvIP); | 142 | rc = dns_resolve_server_name_to_ip(*devname, &srvIP); |
| 137 | if (rc != 0) { | 143 | if (rc != 0) { |
| 138 | cERROR(1, ("%s: Failed to resolve server part of %s to IP: %d", | 144 | cERROR(1, ("%s: Failed to resolve server part of %s to IP: %d", |
