diff options
Diffstat (limited to 'fs/nfs/nfs4namespace.c')
-rw-r--r-- | fs/nfs/nfs4namespace.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c index 956cbbc2ae9f..6bcc5696f911 100644 --- a/fs/nfs/nfs4namespace.c +++ b/fs/nfs/nfs4namespace.c | |||
@@ -116,24 +116,22 @@ static struct vfsmount *try_location(struct nfs_clone_mount *mountdata, | |||
116 | { | 116 | { |
117 | struct vfsmount *mnt = ERR_PTR(-ENOENT); | 117 | struct vfsmount *mnt = ERR_PTR(-ENOENT); |
118 | char *mnt_path; | 118 | char *mnt_path; |
119 | unsigned int s = 0; | 119 | unsigned int s; |
120 | 120 | ||
121 | mnt_path = nfs4_pathname_string(&location->rootpath, page2, PAGE_SIZE); | 121 | mnt_path = nfs4_pathname_string(&location->rootpath, page2, PAGE_SIZE); |
122 | if (IS_ERR(mnt_path)) | 122 | if (IS_ERR(mnt_path)) |
123 | return mnt; | 123 | return mnt; |
124 | mountdata->mnt_path = mnt_path; | 124 | mountdata->mnt_path = mnt_path; |
125 | 125 | ||
126 | while (s < location->nservers) { | 126 | for (s = 0; s < location->nservers; s++) { |
127 | struct sockaddr_in addr = { | 127 | struct sockaddr_in addr = { |
128 | .sin_family = AF_INET, | 128 | .sin_family = AF_INET, |
129 | .sin_port = htons(NFS_PORT), | 129 | .sin_port = htons(NFS_PORT), |
130 | }; | 130 | }; |
131 | 131 | ||
132 | if (location->servers[s].len <= 0 || | 132 | if (location->servers[s].len <= 0 || |
133 | valid_ipaddr4(location->servers[s].data) < 0) { | 133 | valid_ipaddr4(location->servers[s].data) < 0) |
134 | s++; | ||
135 | continue; | 134 | continue; |
136 | } | ||
137 | 135 | ||
138 | mountdata->hostname = location->servers[s].data; | 136 | mountdata->hostname = location->servers[s].data; |
139 | addr.sin_addr.s_addr = in_aton(mountdata->hostname), | 137 | addr.sin_addr.s_addr = in_aton(mountdata->hostname), |
@@ -147,7 +145,6 @@ static struct vfsmount *try_location(struct nfs_clone_mount *mountdata, | |||
147 | mnt = vfs_kern_mount(&nfs4_referral_fs_type, 0, page, mountdata); | 145 | mnt = vfs_kern_mount(&nfs4_referral_fs_type, 0, page, mountdata); |
148 | if (!IS_ERR(mnt)) | 146 | if (!IS_ERR(mnt)) |
149 | break; | 147 | break; |
150 | s++; | ||
151 | } | 148 | } |
152 | return mnt; | 149 | return mnt; |
153 | } | 150 | } |
@@ -193,20 +190,16 @@ static struct vfsmount *nfs_follow_referral(const struct vfsmount *mnt_parent, | |||
193 | goto out; | 190 | goto out; |
194 | } | 191 | } |
195 | 192 | ||
196 | loc = 0; | 193 | for (loc = 0; loc < locations->nlocations; loc++) { |
197 | while (loc < locations->nlocations) { | ||
198 | const struct nfs4_fs_location *location = &locations->locations[loc]; | 194 | const struct nfs4_fs_location *location = &locations->locations[loc]; |
199 | 195 | ||
200 | if (location == NULL || location->nservers <= 0 || | 196 | if (location == NULL || location->nservers <= 0 || |
201 | location->rootpath.ncomponents == 0) { | 197 | location->rootpath.ncomponents == 0) |
202 | loc++; | ||
203 | continue; | 198 | continue; |
204 | } | ||
205 | 199 | ||
206 | mnt = try_location(&mountdata, page, page2, location); | 200 | mnt = try_location(&mountdata, page, page2, location); |
207 | if (!IS_ERR(mnt)) | 201 | if (!IS_ERR(mnt)) |
208 | break; | 202 | break; |
209 | loc++; | ||
210 | } | 203 | } |
211 | 204 | ||
212 | out: | 205 | out: |