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

Commit 136e658d authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: rearrange exchange_id logic to simplify



Minor cleanup: it's simpler to have separate code paths for the update
and non-update cases.

Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 2dbb269d
Loading
Loading
Loading
Loading
+20 −20
Original line number Diff line number Diff line
@@ -1557,37 +1557,37 @@ nfsd4_exchange_id(struct svc_rqst *rqstp,
		bool creds_match = same_creds(&conf->cl_cred, &rqstp->rq_cred);
		bool verfs_match = same_verf(&verf, &conf->cl_verifier);

		if (!clp_used_exchangeid(conf)) {
			if (update) { /* buggy client */
		if (update) {
			if (!clp_used_exchangeid(conf)) { /* buggy client */
				status = nfserr_inval;
				goto out;
			}
		}
			if (!creds_match) { /* case 9 */
			if (update)
				status = nfserr_perm;
			else /* case 3 */
				status = nfserr_clid_inuse;
				goto out;
			}
			if (!verfs_match) { /* case 8 */
			if (update) {
				status = nfserr_not_same;
				goto out;
			}
			/* case 5, client reboot */
			expire_client(conf);
			goto out_new;
			/* case 6 */
			exid->flags |= EXCHGID4_FLAG_CONFIRMED_R;
			new = conf;
			goto out_copy;
		}
		if (!clp_used_exchangeid(conf)) {
			status = nfserr_inval;
		if (!creds_match) { /* case 3 */
			status = nfserr_clid_inuse;
			goto out;
		}
		/* case 2 */
		if (verfs_match) { /* case 2 */
			exid->flags |= EXCHGID4_FLAG_CONFIRMED_R;
			new = conf;
			goto out_copy;
		}
		/* case 5, client reboot */
		expire_client(conf);
		goto out_new;
	}

	if (update) { /* case 7 */
		status = nfserr_noent;