aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-01-03 03:55:58 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-01-06 14:58:58 -0500
commit26c78e156b1d1b2387ec33b5f2fb62d6e0a186a3 (patch)
treefdbcdc6baa25af41d6935eebd537997fa24bf495
parent58df095b732529ade8f4051b41d7c29731afecd6 (diff)
NFSv4: Fix an Oops in nfs_do_expire_all_delegations
If the loop errors, we need to exit. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--fs/nfs/delegation.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
index 66cc720e3927..c6f07c1c71e6 100644
--- a/fs/nfs/delegation.c
+++ b/fs/nfs/delegation.c
@@ -236,7 +236,6 @@ int nfs_do_expire_all_delegations(void *ptr)
236 struct nfs4_client *clp = ptr; 236 struct nfs4_client *clp = ptr;
237 struct nfs_delegation *delegation; 237 struct nfs_delegation *delegation;
238 struct inode *inode; 238 struct inode *inode;
239 int err = 0;
240 239
241 allow_signal(SIGKILL); 240 allow_signal(SIGKILL);
242restart: 241restart:
@@ -250,10 +249,9 @@ restart:
250 if (inode == NULL) 249 if (inode == NULL)
251 continue; 250 continue;
252 spin_unlock(&clp->cl_lock); 251 spin_unlock(&clp->cl_lock);
253 err = nfs_inode_return_delegation(inode); 252 nfs_inode_return_delegation(inode);
254 iput(inode); 253 iput(inode);
255 if (!err) 254 goto restart;
256 goto restart;
257 } 255 }
258out: 256out:
259 spin_unlock(&clp->cl_lock); 257 spin_unlock(&clp->cl_lock);