diff options
-rw-r--r-- | fs/nfsd/nfs4state.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 9f9db40b5666..e388c9070de4 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -3084,7 +3084,12 @@ nfsd4_release_lockowner(struct svc_rqst *rqstp, struct nfsd4_release_lockowner * | |||
3084 | * of the lockowner state released; so don't release any until all | 3084 | * of the lockowner state released; so don't release any until all |
3085 | * have been checked. */ | 3085 | * have been checked. */ |
3086 | status = nfs_ok; | 3086 | status = nfs_ok; |
3087 | list_for_each_entry(sop, &matches, so_perclient) { | 3087 | while (!list_empty(&matches)) { |
3088 | sop = list_entry(matches.next, struct nfs4_stateowner, | ||
3089 | so_perclient); | ||
3090 | /* unhash_stateowner deletes so_perclient only | ||
3091 | * for openowners. */ | ||
3092 | list_del(&sop->so_perclient); | ||
3088 | release_stateowner(sop); | 3093 | release_stateowner(sop); |
3089 | } | 3094 | } |
3090 | out: | 3095 | out: |