diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-27 18:13:02 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-03-27 21:53:14 -0400 |
| commit | 05e9cfb408b24debb3a85fd98edbfd09dd148881 (patch) | |
| tree | 47c4039701bf081a8b6e9209b65c1284f2183dd7 | |
| parent | 864cf9bf99f62d2095c8e6cc3a87af80b263984e (diff) | |
NFSv4: Fix two infinite loops in the mount code
We can currently loop forever in nfs4_lookup_root() and in
nfs41_proc_secinfo_no_name(), if the first iteration returns a
NFS4ERR_DELAY or something else that causes exception.retry to get
set.
Reported-by: Weston Andros Adamson <dros@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org
| -rw-r--r-- | fs/nfs/nfs4proc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 45df7d4a3acc..ee9ca19457ab 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
| @@ -2290,11 +2290,12 @@ static int nfs4_lookup_root(struct nfs_server *server, struct nfs_fh *fhandle, | |||
| 2290 | switch (err) { | 2290 | switch (err) { |
| 2291 | case 0: | 2291 | case 0: |
| 2292 | case -NFS4ERR_WRONGSEC: | 2292 | case -NFS4ERR_WRONGSEC: |
| 2293 | break; | 2293 | goto out; |
| 2294 | default: | 2294 | default: |
| 2295 | err = nfs4_handle_exception(server, err, &exception); | 2295 | err = nfs4_handle_exception(server, err, &exception); |
| 2296 | } | 2296 | } |
| 2297 | } while (exception.retry); | 2297 | } while (exception.retry); |
| 2298 | out: | ||
| 2298 | return err; | 2299 | return err; |
| 2299 | } | 2300 | } |
| 2300 | 2301 | ||
| @@ -6229,11 +6230,12 @@ nfs41_proc_secinfo_no_name(struct nfs_server *server, struct nfs_fh *fhandle, | |||
| 6229 | case 0: | 6230 | case 0: |
| 6230 | case -NFS4ERR_WRONGSEC: | 6231 | case -NFS4ERR_WRONGSEC: |
| 6231 | case -NFS4ERR_NOTSUPP: | 6232 | case -NFS4ERR_NOTSUPP: |
| 6232 | break; | 6233 | goto out; |
| 6233 | default: | 6234 | default: |
| 6234 | err = nfs4_handle_exception(server, err, &exception); | 6235 | err = nfs4_handle_exception(server, err, &exception); |
| 6235 | } | 6236 | } |
| 6236 | } while (exception.retry); | 6237 | } while (exception.retry); |
| 6238 | out: | ||
| 6237 | return err; | 6239 | return err; |
| 6238 | } | 6240 | } |
| 6239 | 6241 | ||
