NFSv4: Fix a bug in __nfs4_find_state_byowner

The test for state->state == 0 does not tell you that the stateid is in the
process of being freed. It really tells you that the stateid is not yet
initialised...

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Trond Myklebust 2007-07-03 14:41:19 -04:00
parent 1b45c46cf7
commit 1c816efa24

View File

@ -333,13 +333,10 @@ __nfs4_find_state_byowner(struct inode *inode, struct nfs4_state_owner *owner)
struct nfs4_state *state;
list_for_each_entry(state, &nfsi->open_states, inode_states) {
/* Is this in the process of being freed? */
if (state->state == 0)
if (state->owner != owner)
continue;
if (state->owner == owner) {
atomic_inc(&state->count);
if (atomic_inc_not_zero(&state->count))
return state;
}
}
return NULL;
}