Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c816efa authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 1b45c46c
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -333,14 +333,11 @@ __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;
}