Loading fs/nfsd/nfs4state.c +16 −18 Original line number Diff line number Diff line Loading @@ -3261,28 +3261,26 @@ static int is_delegation_stateid(stateid_t *stateid) __be32 nfs4_validate_stateid(stateid_t *stateid, bool has_session) { struct nfs4_ol_stateid *stp = NULL; __be32 status = nfserr_stale_stateid; struct nfs4_stid *s; struct nfs4_ol_stateid *ols; __be32 status; if (STALE_STATEID(stateid)) goto out; status = nfserr_expired; stp = find_ol_stateid(stateid); if (!stp) goto out; status = nfserr_bad_stateid; if (stp->st_stateowner->so_is_open_owner && !openowner(stp->st_stateowner)->oo_confirmed) goto out; return nfserr_stale_stateid; status = check_stateid_generation(stateid, &stp->st_stid.sc_stateid, has_session); s = find_stateid(stateid); if (!s) return nfserr_stale_stateid; status = check_stateid_generation(stateid, &s->sc_stateid, has_session); if (status) goto out; status = nfs_ok; out: return status; if (!(s->sc_type & (NFS4_OPEN_STID | NFS4_LOCK_STID))) return nfs_ok; ols = openlockstateid(s); if (ols->st_stateowner->so_is_open_owner && !openowner(ols->st_stateowner)->oo_confirmed) return nfserr_bad_stateid; return nfs_ok; } /* Loading Loading
fs/nfsd/nfs4state.c +16 −18 Original line number Diff line number Diff line Loading @@ -3261,28 +3261,26 @@ static int is_delegation_stateid(stateid_t *stateid) __be32 nfs4_validate_stateid(stateid_t *stateid, bool has_session) { struct nfs4_ol_stateid *stp = NULL; __be32 status = nfserr_stale_stateid; struct nfs4_stid *s; struct nfs4_ol_stateid *ols; __be32 status; if (STALE_STATEID(stateid)) goto out; status = nfserr_expired; stp = find_ol_stateid(stateid); if (!stp) goto out; status = nfserr_bad_stateid; if (stp->st_stateowner->so_is_open_owner && !openowner(stp->st_stateowner)->oo_confirmed) goto out; return nfserr_stale_stateid; status = check_stateid_generation(stateid, &stp->st_stid.sc_stateid, has_session); s = find_stateid(stateid); if (!s) return nfserr_stale_stateid; status = check_stateid_generation(stateid, &s->sc_stateid, has_session); if (status) goto out; status = nfs_ok; out: return status; if (!(s->sc_type & (NFS4_OPEN_STID | NFS4_LOCK_STID))) return nfs_ok; ols = openlockstateid(s); if (ols->st_stateowner->so_is_open_owner && !openowner(ols->st_stateowner)->oo_confirmed) return nfserr_bad_stateid; return nfs_ok; } /* Loading