From 8483ba354f2cedb872a2bd74058cc5f259f4e69d Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Thu, 7 Jul 2005 17:59:14 -0700 Subject: [PATCH] --- yaml --- r: 4381 b: refs/heads/master c: 0fa822e452084032b8495ca0d8e0199329847815 h: refs/heads/master i: 4379: b48936ec74372a366cd984ae30664896ff575f89 v: v3 --- [refs] | 2 +- trunk/fs/nfsd/nfs4state.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 9d8bc6b7fb22..ae73328fd5bf 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 67be431350941765e211eeed237c12def3aaba70 +refs/heads/master: 0fa822e452084032b8495ca0d8e0199329847815 diff --git a/trunk/fs/nfsd/nfs4state.c b/trunk/fs/nfsd/nfs4state.c index 9f9db40b5666..e388c9070de4 100644 --- a/trunk/fs/nfsd/nfs4state.c +++ b/trunk/fs/nfsd/nfs4state.c @@ -3084,7 +3084,12 @@ nfsd4_release_lockowner(struct svc_rqst *rqstp, struct nfsd4_release_lockowner * * of the lockowner state released; so don't release any until all * have been checked. */ status = nfs_ok; - list_for_each_entry(sop, &matches, so_perclient) { + while (!list_empty(&matches)) { + sop = list_entry(matches.next, struct nfs4_stateowner, + so_perclient); + /* unhash_stateowner deletes so_perclient only + * for openowners. */ + list_del(&sop->so_perclient); release_stateowner(sop); } out: