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

Commit 684e5638 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: cleanup lock clientid handling in sessions case



I'd rather the "ignore clientid in sessions case" rule be enforced in
just one place.

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent b93d87c1
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -3947,9 +3947,14 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
		 */
		struct nfs4_ol_stateid *open_stp = NULL;

		if (nfsd4_has_session(cstate))
			/* See rfc 5661 18.10.3: given clientid is ignored: */
			memcpy(&lock->v.new.clientid,
				&cstate->session->se_client->cl_clientid,
				sizeof(clientid_t));

		status = nfserr_stale_clientid;
		if (!nfsd4_has_session(cstate) &&
		    STALE_CLIENTID(&lock->lk_new_clientid))
		if (STALE_CLIENTID(&lock->lk_new_clientid))
			goto out;

		/* validate and update open stateid and open seqid */
@@ -3961,8 +3966,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
			goto out;
		open_sop = openowner(open_stp->st_stateowner);
		status = nfserr_bad_stateid;
		if (!nfsd4_has_session(cstate) &&
			!same_clid(&open_sop->oo_owner.so_client->cl_clientid,
		if (!same_clid(&open_sop->oo_owner.so_client->cl_clientid,
						&lock->v.new.clientid))
			goto out;
		/* create lockowner and lock stateid */