Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp1560472pxb; Fri, 20 Nov 2020 12:36:23 -0800 (PST) X-Google-Smtp-Source: ABdhPJzcaHRfEyEctAGIisuyZ8DXV6h+eQYVFTnh+TZaUTxv3DIvfJ8W1rnPuysASViNUl5aONCr X-Received: by 2002:a17:906:229b:: with SMTP id p27mr13610152eja.292.1605904583215; Fri, 20 Nov 2020 12:36:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605904583; cv=none; d=google.com; s=arc-20160816; b=VHpRSGQQo5xuDU955/OEubugVzrJZHmbbAOugSxI86eiNnPVN/Wkz6xI64DdlTN6ZU x9Uj8MJ+5LtSoztlCXOhTX1u3nRkEljEVyHE9s67gQ3xCvl/r+Ot4tbeA1jwLzZHIpuQ XygFZuW/gC8PQFEKGIKuQt/YXwgsf4aqz3UrE7hTfFBz2kzYiWKKf8iudWgy6zwg6NXd samIAjsQUTX1Mri0hBWWuDqEcQJKq/bpLuVlwT3kwZzrbiHTesDs88w/ce0rqCg1Ftwv nO0svxY94uUpQIAs/Kut6l+XSRQCg0I3PVo7DIzSMJDB8rZk0Cc1rEBesPAHkdv7ia9w k4hg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:to:from:subject :sender:dkim-signature; bh=BKz2uoAeik9FYygQlJXv8WpiY102Wc09x2r6FKBfoHs=; b=VJJ/UbQV1C+1EdnwQ8EPR9Prpq3OCLSWZOVykYRAVchcZIU4+akm0XJH0alDtT7jIK d9z658x9iOQrMbzo02LFodwem89QFUIFkrFmCxtSrJZ0yJjQhX4nvGPf9MwgfqYnyAtK zf4Qv2NwbIAKOQ6wHXA8h+hYJbpFYBg4wBhiSk3qcDvUKncp+7uEeJDx7d/hQXtglLLT HEfY7iX87IeoBCUsLK8kCTB6JoXA/N3OXRvAj3dMWBEQ/3NyqCHcChHt5k3w1sEoH3ec Tzaq9UTJzuzlIe2cknDCBXWugJLbatJhkqf4L8y6y0ZsB2EE381aK2qZRokxWC7Qj3UR dLYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=TQDvz5Pg; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ec23si2304374ejb.573.2020.11.20.12.35.59; Fri, 20 Nov 2020 12:36:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=TQDvz5Pg; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731395AbgKTUf5 (ORCPT + 99 others); Fri, 20 Nov 2020 15:35:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731165AbgKTUf5 (ORCPT ); Fri, 20 Nov 2020 15:35:57 -0500 Received: from mail-qk1-x742.google.com (mail-qk1-x742.google.com [IPv6:2607:f8b0:4864:20::742]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CC6CBC0613CF for ; Fri, 20 Nov 2020 12:35:56 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id n132so10240552qke.1 for ; Fri, 20 Nov 2020 12:35:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:from:to:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=BKz2uoAeik9FYygQlJXv8WpiY102Wc09x2r6FKBfoHs=; b=TQDvz5Pg6JxhG5YRoQiFh1c3Yq9fy5531AsTRqoKDt7SzoZ2nlHo382gZZ57UbBu3g gcobCGBe1rkcW+gzlZdIQmOn7aFtPudzd+7/H0rTyUAe6ONoyhtNPCN+e1O+0vhFqiA4 Gb5hbv3YU3uVZJUPF+rJDrIQodaTIfWWfDkavYAhMkg2CVP0ZNCn7VINLwgmwMnTxC+z g+v8258M+Gh4axezZA2a7Cv/6MuxmvpdmWXNouoWcxy/objB6C60aIrzzRBMAn2woo37 8wy0cHlSsihkhguPtEVxzeS3qj59IaO3KAO/Kn1F3j8ZnpIscB5UlaUobZD4bQJnpraI o/ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:from:to:date:message-id :in-reply-to:references:user-agent:mime-version :content-transfer-encoding; bh=BKz2uoAeik9FYygQlJXv8WpiY102Wc09x2r6FKBfoHs=; b=taIVBDynT/AoUhcrOgewSWGOHMwaHyl9yoU2oAuQh6+1dNDF2AHafd1C8TuvPCJGnm zvtdfdbNwVCKaa0PyYdM9npVHZY5FGv3tomTcfH6liQyx7H8ACLUgqbQRKz6mdu6d6AT no1BwSuWAYzDhNZSkA4u2CSo+//wiWrA1tCctfvRsv8ha0FTnk/tiNpT6b80T5vjNDxC EdUZsmZoRtdpYYqJ9l5G1iCtUQWFJWPJwULJjliQqTDocEScmNnBvnxwI8PGFfdeWhgD 0I3d7hFXPNxj41WH7eJh9TsPkn6Ts4FTL27lbqQuHuYBga0rsD+YADTUrqY/X98ja1sc zGqw== X-Gm-Message-State: AOAM533bI+TZwSK8lKNYwr+puDqVhjS0TVPxCKTKHPuQC784UbnM4nU9 bxsUc+FHgQ8qkB9wVOnfDbQd8BOkj5M= X-Received: by 2002:a37:9ec4:: with SMTP id h187mr18046994qke.154.1605904555782; Fri, 20 Nov 2020 12:35:55 -0800 (PST) Received: from gateway.1015granger.net (c-68-61-232-219.hsd1.mi.comcast.net. [68.61.232.219]) by smtp.gmail.com with ESMTPSA id 7sm2835532qko.106.2020.11.20.12.35.54 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:55 -0800 (PST) Sender: Chuck Lever Received: from klimt.1015granger.net (klimt.1015granger.net [192.168.1.55]) by gateway.1015granger.net (8.14.7/8.14.7) with ESMTP id 0AKKZsch029274 for ; Fri, 20 Nov 2020 20:35:54 GMT Subject: [PATCH v2 024/118] NFSD: Add helpers to decode a clientid4 and an NFSv4 state owner From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:54 -0500 Message-ID: <160590455400.1340.7050724078445373205.stgit@klimt.1015granger.net> In-Reply-To: <160590425404.1340.8850646771948736468.stgit@klimt.1015granger.net> References: <160590425404.1340.8850646771948736468.stgit@klimt.1015granger.net> User-Agent: StGit/0.23-29-ga622f1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org These helpers will also be used to simplify decoders in subsequent patches. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index ec2cad8477e0..a7c9a0368951 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -541,6 +541,30 @@ nfsd4_decode_fattr4(struct nfsd4_compoundargs *argp, u32 *bmval, u32 bmlen, return nfs_ok; } +static __be32 +nfsd4_decode_clientid4(struct nfsd4_compoundargs *argp, clientid_t *clientid) +{ + __be32 *p; + + p = xdr_inline_decode(argp->xdr, sizeof(__be64)); + if (!p) + return nfserr_bad_xdr; + memcpy(clientid, p, sizeof(*clientid)); + return nfs_ok; +} + +static __be32 +nfsd4_decode_state_owner4(struct nfsd4_compoundargs *argp, + clientid_t *clientid, struct xdr_netobj *owner) +{ + __be32 status; + + status = nfsd4_decode_clientid4(argp, clientid); + if (status) + return status; + return nfsd4_decode_opaque(argp, owner); +} + static __be32 nfsd4_decode_stateid4(struct nfsd4_compoundargs *argp, stateid_t *sid) { @@ -779,12 +803,12 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) status = nfsd4_decode_stateid4(argp, &lock->lk_new_open_stateid); if (status) return status; - READ_BUF(8 + sizeof(clientid_t)); + READ_BUF(4); lock->lk_new_lock_seqid = be32_to_cpup(p++); - COPYMEM(&lock->lk_new_clientid, sizeof(clientid_t)); - lock->lk_new_owner.len = be32_to_cpup(p++); - READ_BUF(lock->lk_new_owner.len); - READMEM(lock->lk_new_owner.data, lock->lk_new_owner.len); + status = nfsd4_decode_state_owner4(argp, &lock->lk_new_clientid, + &lock->lk_new_owner); + if (status) + return status; } else { status = nfsd4_decode_stateid4(argp, &lock->lk_old_lock_stateid); if (status)