From patchwork Fri Nov 20 20:33:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922231 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F3A89C56202 for ; Fri, 20 Nov 2020 20:34:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A152222470 for ; Fri, 20 Nov 2020 20:34:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Rx7M0SaN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731005AbgKTUdy (ORCPT ); Fri, 20 Nov 2020 15:33:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60596 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730372AbgKTUdy (ORCPT ); Fri, 20 Nov 2020 15:33:54 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42801C0613CF for ; Fri, 20 Nov 2020 12:33:54 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id q5so10157363qkc.12 for ; Fri, 20 Nov 2020 12:33:54 -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=lI50/gELjS2rXymyXdCFIVVfAWwxhe722H5bkJzcpsk=; b=Rx7M0SaN3JkAweKmKpDrph/ndbZ6nGAh81pxptwLrHVxfcswY5iGYJcr4MkFdFj585 mJPZaGBC40S7++jQim0O0YPWuDYhAu5BUGmHZAcZhkrjyq2eZblhCDtEdAMmRa3dOwan P7oIPo4f5UaBEbyIshL9vYSSmPA9HKuy6VnvpHX4Qb/dayv14IFoQAm/G5UG5pmXAxql CdZZdrqvPImDhB8EbGbRnJ5PVrWre+4PkEJsYd+Bw4f/P6HUv5LDlLcjaoIkTewfsRF7 wOMWnFBgIjXLNWVSzRXlOy4CeWASWCwc6gjz00h2L2IsgHR/afswqAq7YrgL2S4yVSKd JqRg== 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=lI50/gELjS2rXymyXdCFIVVfAWwxhe722H5bkJzcpsk=; b=cdkKOeso2YPzBFRBjmZWc5YRKy1mUSxghAsk7EtYJc/+NH6qrZTIlvse3ty3izZn/w npZCylS9QrbDcqohijkICluxBviZcOMVoQRJdiKRmCYmwE9hhy235afnhaC7BNMq1tf6 FyMXhsjWPMK/qBIXKbPkizEayAJRKGD3dIThHpLx0OAjxR1Lx/jXCVue12VPxUC1RxT8 jnFapUbORJYqp6sIBuUY54Jctmlafmmm1vGB02CaQ/2fxBZ+xp//S9hsdLLYpxHWZw0H 642dSLj4K61DYzFceUJL20OTmUWnTqWO480q41LfAz6iFa+Eyx0guztPl0SPyZmdH1iu HJNg== X-Gm-Message-State: AOAM530QcUZhjkVYIdSoDJZ6SGwNef/wszSE4MYX/G6zd3Os5DDLB88y 6o1EmFuK6zhJb7EjFz9xghSe3iowJsM= X-Google-Smtp-Source: ABdhPJxNYfgZ5/kRrddTBIsz3uelVQLwmKQkBvNnRKYog1CZWpTFDNGNHTfinyk+8b4UkiyvcH8Drg== X-Received: by 2002:a37:90c3:: with SMTP id s186mr18805538qkd.130.1605904433179; Fri, 20 Nov 2020 12:33:53 -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 s68sm2765980qkc.43.2020.11.20.12.33.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:33:52 -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 0AKKXpcC029205 for ; Fri, 20 Nov 2020 20:33:51 GMT Subject: [PATCH v2 001/118] NFSD: Fix returned READDIR offset cookie From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:33:51 -0500 Message-ID: <160590443133.1340.6772360578279663543.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Code inspection shows that the server's NFSv3 READDIR implementation returns the same offset cookie as the client sent, instead of the last cookie it returns in the reply's dirlist. This is unlike the NFSv2 READDIR, NFSv3 READDIRPLUS, and NFSv4 READDIR implementations, and it's been like this since the beginning of kernel git history. I copied the logic from nfsd3_proc_readdirplus(). Signed-off-by: Chuck Lever --- fs/nfsd/nfs3proc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index d9be589fed15..e0ad18d6b5a8 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -430,6 +430,7 @@ nfsd3_proc_readdir(struct svc_rqst *rqstp) struct nfsd3_readdirargs *argp = rqstp->rq_argp; struct nfsd3_readdirres *resp = rqstp->rq_resp; int count = 0; + loff_t offset; struct page **p; caddr_t page_addr = NULL; @@ -448,7 +449,9 @@ nfsd3_proc_readdir(struct svc_rqst *rqstp) resp->common.err = nfs_ok; resp->buffer = argp->buffer; resp->rqstp = rqstp; - resp->status = nfsd_readdir(rqstp, &resp->fh, (loff_t *)&argp->cookie, + offset = argp->cookie; + + resp->status = nfsd_readdir(rqstp, &resp->fh, &offset, &resp->common, nfs3svc_encode_entry); memcpy(resp->verf, argp->verf, 8); count = 0; @@ -464,8 +467,6 @@ nfsd3_proc_readdir(struct svc_rqst *rqstp) } resp->count = count >> 2; if (resp->offset) { - loff_t offset = argp->cookie; - if (unlikely(resp->offset1)) { /* we ended up with offset on a page boundary */ *resp->offset = htonl(offset >> 32); From patchwork Fri Nov 20 20:33:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922233 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 30D54C6379D for ; Fri, 20 Nov 2020 20:34:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DA2A922D0A for ; Fri, 20 Nov 2020 20:34:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZpjXLP1L" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731028AbgKTUeA (ORCPT ); Fri, 20 Nov 2020 15:34:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60608 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730372AbgKTUeA (ORCPT ); Fri, 20 Nov 2020 15:34:00 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C94F9C0613CF for ; Fri, 20 Nov 2020 12:33:59 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id q5so10157609qkc.12 for ; Fri, 20 Nov 2020 12:33:59 -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=HcSb6CUIyEdHtSUSeX0VbJSU8WnCONnxaJpo3aBIQQY=; b=ZpjXLP1LWQWc1GG/sIqUVQm3AO+WkUG8EzZwZIeSadcuRSXWwlJ7xqONbml4iRIIqO 9xi0f9Zbda60C5zTTGd4ny/ChenJ3vocv7RxWy102Iz3UfvaLq47XMPx9ZtKg0961ATW dAUvo7G7RF874cPCOuYd2TNYhWaphGg+EZ6XPa3DOAilgVYrywwggks7s0wOJSfmZOje 79KO8826wjrCUnk4IbWvlaa2oDp4OYeb04vY4Jw5MzjVIAdUpwE/vrgvBnYL5xnO6j6C eBn3408RuTrYZDOH7CG+KJKRtQ/TWnaGXKsW8WbMbUnd/vr4yhj27SpQyUlbQ9zYYE+r nMKw== 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=HcSb6CUIyEdHtSUSeX0VbJSU8WnCONnxaJpo3aBIQQY=; b=Ple2Vsupg6ryExBO4++SNjiTydDvZF/G0YpNoNp0VX6GpBovIeG8nZGC8p1iDWJ09K HAujMzS323t2XWwDv+wFfacCMPaTKJh5ixTHkhQeZDKo4yUASeI+NgIxnK4JOdc88hS2 eLHxGHU1nRX+x3RKM0QJjhDTzP1WrQ5lOhx+FNL1lgDzB6u0KljpA2yRQ7rwd0oCJzAT K+8tK7jgqapZ+cW/zdrCbH0tKnxLX6ez+tu1KC3kK+JYr+Tsy+PKEHZF8E0E66fxyvZ/ X6OLAkj4WnKDHlknUH0Gk1pVTZMGY12VkoCYCXtzEn7KuaFpMH9RgoihrX5k1i3cx5Kp 4DXg== X-Gm-Message-State: AOAM532T9CVxvqZ2XuAU2Rk1Ar5ArIhmj1AUCbA4TAvur3Mud28cK9fO /ojwpFRJvqEx0m7qSnWhMuJDMgsv5qQ= X-Google-Smtp-Source: ABdhPJyVgcema9Lvcz7L3GyiZ/qI4cYQYJLcL+r0/A6Ga5G8L3yLjNeHr3LUoXGT7O5OImvVLa5W1Q== X-Received: by 2002:a37:7d01:: with SMTP id y1mr18534902qkc.327.1605904438484; Fri, 20 Nov 2020 12:33:58 -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 q31sm2144296qtd.23.2020.11.20.12.33.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:33:57 -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 0AKKXuGq029208 for ; Fri, 20 Nov 2020 20:33:56 GMT Subject: [PATCH v2 002/118] SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:33:56 -0500 Message-ID: <160590443670.1340.14301271082837069231.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Clean up: De-duplicate some frequently-used code. Signed-off-by: Chuck Lever --- fs/nfs/blocklayout/blocklayout.c | 2 + fs/nfs/blocklayout/dev.c | 2 + fs/nfs/dir.c | 2 + fs/nfs/filelayout/filelayout.c | 2 + fs/nfs/filelayout/filelayoutdev.c | 2 + fs/nfs/flexfilelayout/flexfilelayout.c | 2 + fs/nfs/flexfilelayout/flexfilelayoutdev.c | 2 + fs/nfs/nfs42xdr.c | 2 + fs/nfs/nfs4xdr.c | 6 +--- fs/nfsd/nfs4proc.c | 2 + include/linux/sunrpc/xdr.h | 44 ++++++++++++++++++++++++++++- net/sunrpc/auth_gss/gss_rpc_xdr.c | 2 + net/sunrpc/xdr.c | 28 +++--------------- 13 files changed, 59 insertions(+), 39 deletions(-) diff --git a/fs/nfs/blocklayout/blocklayout.c b/fs/nfs/blocklayout/blocklayout.c index 08108b6d2fa1..3be6836074ae 100644 --- a/fs/nfs/blocklayout/blocklayout.c +++ b/fs/nfs/blocklayout/blocklayout.c @@ -697,7 +697,7 @@ bl_alloc_lseg(struct pnfs_layout_hdr *lo, struct nfs4_layoutget_res *lgr, xdr_init_decode_pages(&xdr, &buf, lgr->layoutp->pages, lgr->layoutp->len); - xdr_set_scratch_buffer(&xdr, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&xdr, scratch); status = -EIO; p = xdr_inline_decode(&xdr, 4); diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c index dec5880ac6de..acb1d22907da 100644 --- a/fs/nfs/blocklayout/dev.c +++ b/fs/nfs/blocklayout/dev.c @@ -510,7 +510,7 @@ bl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, goto out; xdr_init_decode_pages(&xdr, &buf, pdev->pages, pdev->pglen); - xdr_set_scratch_buffer(&xdr, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&xdr, scratch); p = xdr_inline_decode(&xdr, sizeof(__be32)); if (!p) diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 4e011adaf967..8a24fe20dccf 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -576,7 +576,7 @@ int nfs_readdir_page_filler(nfs_readdir_descriptor_t *desc, struct nfs_entry *en goto out_nopages; xdr_init_decode_pages(&stream, &buf, xdr_pages, buflen); - xdr_set_scratch_buffer(&stream, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&stream, scratch); do { if (entry->label) diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c index 7f5aa0403e16..d158a500c25c 100644 --- a/fs/nfs/filelayout/filelayout.c +++ b/fs/nfs/filelayout/filelayout.c @@ -666,7 +666,7 @@ filelayout_decode_layout(struct pnfs_layout_hdr *flo, return -ENOMEM; xdr_init_decode_pages(&stream, &buf, lgr->layoutp->pages, lgr->layoutp->len); - xdr_set_scratch_buffer(&stream, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&stream, scratch); /* 20 = ufl_util (4), first_stripe_index (4), pattern_offset (8), * num_fh (4) */ diff --git a/fs/nfs/filelayout/filelayoutdev.c b/fs/nfs/filelayout/filelayoutdev.c index d913e818858f..86c3f7e69ec4 100644 --- a/fs/nfs/filelayout/filelayoutdev.c +++ b/fs/nfs/filelayout/filelayoutdev.c @@ -82,7 +82,7 @@ nfs4_fl_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, goto out_err; xdr_init_decode_pages(&stream, &buf, pdev->pages, pdev->pglen); - xdr_set_scratch_buffer(&stream, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&stream, scratch); /* Get the stripe count (number of stripe index) */ p = xdr_inline_decode(&stream, 4); diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c index a163533446fa..d7010686d39a 100644 --- a/fs/nfs/flexfilelayout/flexfilelayout.c +++ b/fs/nfs/flexfilelayout/flexfilelayout.c @@ -378,7 +378,7 @@ ff_layout_alloc_lseg(struct pnfs_layout_hdr *lh, xdr_init_decode_pages(&stream, &buf, lgr->layoutp->pages, lgr->layoutp->len); - xdr_set_scratch_buffer(&stream, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&stream, scratch); /* stripe unit and mirror_array_cnt */ rc = -EIO; diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c index 3eda40a320a5..c9b61b818ec1 100644 --- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c +++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c @@ -69,7 +69,7 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev, INIT_LIST_HEAD(&dsaddrs); xdr_init_decode_pages(&stream, &buf, pdev->pages, pdev->pglen); - xdr_set_scratch_buffer(&stream, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(&stream, scratch); /* multipath count */ p = xdr_inline_decode(&stream, 4); diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c index 6e060a88f98c..cb5d4da2308f 100644 --- a/fs/nfs/nfs42xdr.c +++ b/fs/nfs/nfs42xdr.c @@ -1540,7 +1540,7 @@ static int nfs4_xdr_dec_listxattrs(struct rpc_rqst *rqstp, struct compound_hdr hdr; int status; - xdr_set_scratch_buffer(xdr, page_address(res->scratch), PAGE_SIZE); + xdr_set_scratch_page(xdr, res->scratch); status = decode_compound_hdr(xdr, &hdr); if (status) diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index c6dbfcae7517..2eabe5add344 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c @@ -6403,10 +6403,8 @@ nfs4_xdr_dec_getacl(struct rpc_rqst *rqstp, struct xdr_stream *xdr, struct compound_hdr hdr; int status; - if (res->acl_scratch != NULL) { - void *p = page_address(res->acl_scratch); - xdr_set_scratch_buffer(xdr, p, PAGE_SIZE); - } + if (res->acl_scratch != NULL) + xdr_set_scratch_page(xdr, res->acl_scratch); status = decode_compound_hdr(xdr, &hdr); if (status) goto out; diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index e83b21778816..20772f6b0b2d 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -2276,7 +2276,7 @@ static void svcxdr_init_encode(struct svc_rqst *rqstp, xdr->end = head->iov_base + PAGE_SIZE - rqstp->rq_auth_slack; /* Tail and page_len should be zero at this point: */ buf->len = buf->head[0].iov_len; - xdr->scratch.iov_len = 0; + xdr_reset_scratch_buffer(xdr); xdr->page_ptr = buf->pages - 1; buf->buflen = PAGE_SIZE * (1 + rqstp->rq_page_end - buf->pages) - rqstp->rq_auth_slack; diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index ec2a22ccdc2a..2729d2d6efce 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -248,7 +248,6 @@ extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst); extern void xdr_init_decode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, struct page **pages, unsigned int len); -extern void xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen); extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); extern unsigned int xdr_read_pages(struct xdr_stream *xdr, unsigned int len); extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); @@ -256,6 +255,49 @@ extern int xdr_process_buf(struct xdr_buf *buf, unsigned int offset, unsigned in extern uint64_t xdr_align_data(struct xdr_stream *, uint64_t, uint32_t); extern uint64_t xdr_expand_hole(struct xdr_stream *, uint64_t, uint64_t); +/** + * xdr_set_scratch_buffer - Attach a scratch buffer for decoding data. + * @xdr: pointer to xdr_stream struct + * @buf: pointer to an empty buffer + * @buflen: size of 'buf' + * + * The scratch buffer is used when decoding from an array of pages. + * If an xdr_inline_decode() call spans across page boundaries, then + * we copy the data into the scratch buffer in order to allow linear + * access. + */ +static inline void +xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen) +{ + xdr->scratch.iov_base = buf; + xdr->scratch.iov_len = buflen; +} + +/** + * xdr_set_scratch_page - Attach a scratch buffer for decoding data + * @xdr: pointer to xdr_stream struct + * @page: an anonymous page + * + * See xdr_set_scratch_buffer(). + */ +static inline void +xdr_set_scratch_page(struct xdr_stream *xdr, struct page *page) +{ + xdr_set_scratch_buffer(xdr, page_address(page), PAGE_SIZE); +} + +/** + * xdr_reset_scratch_buffer - Clear scratch buffer information + * @xdr: pointer to xdr_stream struct + * + * See xdr_set_scratch_buffer(). + */ +static inline void +xdr_reset_scratch_buffer(struct xdr_stream *xdr) +{ + xdr_set_scratch_buffer(xdr, NULL, 0); +} + /** * xdr_stream_remaining - Return the number of bytes remaining in the stream * @xdr: pointer to struct xdr_stream diff --git a/net/sunrpc/auth_gss/gss_rpc_xdr.c b/net/sunrpc/auth_gss/gss_rpc_xdr.c index 2ff7b7083eba..c636c648849b 100644 --- a/net/sunrpc/auth_gss/gss_rpc_xdr.c +++ b/net/sunrpc/auth_gss/gss_rpc_xdr.c @@ -789,7 +789,7 @@ int gssx_dec_accept_sec_context(struct rpc_rqst *rqstp, scratch = alloc_page(GFP_KERNEL); if (!scratch) return -ENOMEM; - xdr_set_scratch_buffer(xdr, page_address(scratch), PAGE_SIZE); + xdr_set_scratch_page(xdr, scratch); /* res->status */ err = gssx_dec_status(xdr, &res->status); diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index 28f81769a27c..c607744b3ea8 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c @@ -669,7 +669,7 @@ void xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct kvec *iov = buf->head; int scratch_len = buf->buflen - buf->page_len - buf->tail[0].iov_len; - xdr_set_scratch_buffer(xdr, NULL, 0); + xdr_reset_scratch_buffer(xdr); BUG_ON(scratch_len < 0); xdr->buf = buf; xdr->iov = iov; @@ -713,7 +713,7 @@ inline void xdr_commit_encode(struct xdr_stream *xdr) page = page_address(*xdr->page_ptr); memcpy(xdr->scratch.iov_base, page, shift); memmove(page, page + shift, (void *)xdr->p - page); - xdr->scratch.iov_len = 0; + xdr_reset_scratch_buffer(xdr); } EXPORT_SYMBOL_GPL(xdr_commit_encode); @@ -743,8 +743,7 @@ static __be32 *xdr_get_next_encode_buffer(struct xdr_stream *xdr, * the "scratch" iov to track any temporarily unused fragment of * space at the end of the previous buffer: */ - xdr->scratch.iov_base = xdr->p; - xdr->scratch.iov_len = frag1bytes; + xdr_set_scratch_buffer(xdr, xdr->p, frag1bytes); p = page_address(*xdr->page_ptr); /* * Note this is where the next encode will start after we've @@ -1052,8 +1051,7 @@ void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p, struct rpc_rqst *rqst) { xdr->buf = buf; - xdr->scratch.iov_base = NULL; - xdr->scratch.iov_len = 0; + xdr_reset_scratch_buffer(xdr); xdr->nwords = XDR_QUADLEN(buf->len); if (buf->head[0].iov_len != 0) xdr_set_iov(xdr, buf->head, buf->len); @@ -1101,24 +1099,6 @@ static __be32 * __xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes) return p; } -/** - * xdr_set_scratch_buffer - Attach a scratch buffer for decoding data. - * @xdr: pointer to xdr_stream struct - * @buf: pointer to an empty buffer - * @buflen: size of 'buf' - * - * The scratch buffer is used when decoding from an array of pages. - * If an xdr_inline_decode() call spans across page boundaries, then - * we copy the data into the scratch buffer in order to allow linear - * access. - */ -void xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen) -{ - xdr->scratch.iov_base = buf; - xdr->scratch.iov_len = buflen; -} -EXPORT_SYMBOL_GPL(xdr_set_scratch_buffer); - static __be32 *xdr_copy_to_scratch(struct xdr_stream *xdr, size_t nbytes) { __be32 *p; From patchwork Fri Nov 20 20:34:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922235 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41352C2D0E4 for ; Fri, 20 Nov 2020 20:34:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D5C4F221EB for ; Fri, 20 Nov 2020 20:34:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L3j9Nzjx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731068AbgKTUeF (ORCPT ); Fri, 20 Nov 2020 15:34:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731065AbgKTUeF (ORCPT ); Fri, 20 Nov 2020 15:34:05 -0500 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3063C0613CF for ; Fri, 20 Nov 2020 12:34:04 -0800 (PST) Received: by mail-qt1-x842.google.com with SMTP id z3so8084350qtw.9 for ; Fri, 20 Nov 2020 12:34:04 -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=64M8+66Vtjxv9O9begeuBI/TuNRu/dLLVZDpWDC3Wdc=; b=L3j9Nzjx26NX1MtvAnjubNfJ+aE9TyLcC5xlKU32QFDWANx01DBS0PYwmPGSqqaBR1 aBLcTeKGra89lJ/3Y7524FROa1CK6fsHAvucOwuOWEJnB9rjmsLx+mUcNkTsjs3F4o2O 652s5rAq2Bi5pOtnRhUCy67B4IL3X8bQCjxPYWsWvOInEnALM0FIWWAyJkLNEXhG4eLE eXa7SPY9EoPS1kK3kHbOAFYceCIIoGRWm4RiucQBves/prNcvbW4RSPhHbbSaQMlCUXd J2dgTLGFJUnoF1zDHHCLYGcJhHXWRY0CHW9MVgUSNwRTf+NdZ8hcAF4vu/kZI7PLa8ZU Ak7A== 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=64M8+66Vtjxv9O9begeuBI/TuNRu/dLLVZDpWDC3Wdc=; b=ARto+IpQjqKI++LJ/4mrV3gxN2Krd57CqKS8FQhPvFjo5nSAY1JXNoyqOJ6174sGsi iiwml8AVDKeY8kPHBFQiS8hFL9THZn+53BlCSL1hqfMs/A+toOnAKw+p924ynlikeFZp EuMGuDSXyZY1/Q6y+CIQeyF7S0r3FR91uuaHsDYGqLq7T0pPFEQk8bjmlqPqysSRg2Dx jfNySmNlIwvIebMnC7vAbnsRx+a5RE1tpKdBd9X6b9JImaW3JEvu+atR3dzYnBxuCRf+ T023hNZkvKrmG99P2PUvG5Az6A41TwY7sk2/Ehaxsv/XvTH4ShJo+IgHbR56lzvaCQRp OjCg== X-Gm-Message-State: AOAM533K0x01gv3ctUeN3to3uY/pevEKXMalqFVZo0/+6uZR44LnhDxA 7NrdvVy6icBXPL7sTbo26Sg4jR1wfHc= X-Google-Smtp-Source: ABdhPJw5VzaGuBmFHqV6/qnGgNQ1rpJmAKTgGEkV8cRhdYVIpV30tz4Dugq2B1MfNFRlr3//C2B8Uw== X-Received: by 2002:ac8:74d3:: with SMTP id j19mr18300664qtr.259.1605904443744; Fri, 20 Nov 2020 12:34:03 -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 a85sm2841657qkg.3.2020.11.20.12.34.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:03 -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 0AKKY2PG029211 for ; Fri, 20 Nov 2020 20:34:02 GMT Subject: [PATCH v2 003/118] SUNRPC: Prepare for xdr_stream-style decoding on the server-side From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:02 -0500 Message-ID: <160590444205.1340.4589231865882719752.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org A "permanent" struct xdr_stream is allocated in struct svc_rqst so that it is usable by all server-side decoders. A per-rqst scratch buffer is also allocated to handle decoding XDR data items that cross page boundaries. To demonstrate how it will be used, add the first call site for the new svcxdr_init_decode() API. As an additional part of the overall conversion, add symbolic constants for successful and failed XDR operations. Returning "0" is overloaded. Sometimes it means something failed, but sometimes it means success. To make it more clear when XDR decoding functions succeed or fail, introduce symbolic constants. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 3 ++- fs/nfsd/nfssvc.c | 4 +++- include/linux/sunrpc/svc.h | 16 ++++++++++++++++ include/linux/sunrpc/xdr.h | 5 +++++ net/sunrpc/svc.c | 5 +++++ 5 files changed, 31 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index e3c6bea83bd6..66274ad05a9c 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -5321,7 +5321,8 @@ nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p) args->ops = args->iops; args->rqstp = rqstp; - return !nfsd4_decode_compound(args); + return nfsd4_decode_compound(args) == nfs_ok ? XDR_DECODE_DONE : + XDR_DECODE_FAILED; } int diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index 27b1ad136150..daeab72975a3 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -1020,7 +1020,9 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) * (necessary in the NFSv4.0 compound case) */ rqstp->rq_cachetype = proc->pc_cachetype; - if (!proc->pc_decode(rqstp, argv->iov_base)) + + svcxdr_init_decode(rqstp, argv->iov_base); + if (proc->pc_decode(rqstp, argv->iov_base) == XDR_DECODE_FAILED) goto out_decode_err; switch (nfsd_cache_lookup(rqstp)) { diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index c220b734fa69..bb6c93283697 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h @@ -248,6 +248,8 @@ struct svc_rqst { size_t rq_xprt_hlen; /* xprt header len */ struct xdr_buf rq_arg; struct xdr_buf rq_res; + struct xdr_stream rq_xdr_stream; + struct page *rq_scratch_page; struct page *rq_pages[RPCSVC_MAXPAGES + 1]; struct page * *rq_respages; /* points into rq_pages */ struct page * *rq_next_page; /* next reply page to use */ @@ -557,4 +559,18 @@ static inline void svc_reserve_auth(struct svc_rqst *rqstp, int space) svc_reserve(rqstp, space + rqstp->rq_auth_slack); } +/** + * svcxdr_init_decode - Prepare an xdr_stream for svc Call decoding + * @rqstp: controlling server RPC transaction context + * @p: Starting position + * + */ +static inline void svcxdr_init_decode(struct svc_rqst *rqstp, __be32 *p) +{ + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; + + xdr_init_decode(xdr, &rqstp->rq_arg, p, NULL); + xdr_set_scratch_page(xdr, rqstp->rq_scratch_page); +} + #endif /* SUNRPC_SVC_H */ diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 2729d2d6efce..abbb032de4e8 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -19,6 +19,11 @@ struct bio_vec; struct rpc_rqst; +enum xdr_decode_result { + XDR_DECODE_FAILED = 0, + XDR_DECODE_DONE = 1, +}; + /* * Buffer adjustment */ diff --git a/net/sunrpc/svc.c b/net/sunrpc/svc.c index b41500645c3f..4187745887f0 100644 --- a/net/sunrpc/svc.c +++ b/net/sunrpc/svc.c @@ -614,6 +614,10 @@ svc_rqst_alloc(struct svc_serv *serv, struct svc_pool *pool, int node) rqstp->rq_server = serv; rqstp->rq_pool = pool; + rqstp->rq_scratch_page = alloc_pages_node(node, GFP_KERNEL, 0); + if (!rqstp->rq_scratch_page) + goto out_enomem; + rqstp->rq_argp = kmalloc_node(serv->sv_xdrsize, GFP_KERNEL, node); if (!rqstp->rq_argp) goto out_enomem; @@ -842,6 +846,7 @@ void svc_rqst_free(struct svc_rqst *rqstp) { svc_release_buffer(rqstp); + put_page(rqstp->rq_scratch_page); kfree(rqstp->rq_resp); kfree(rqstp->rq_argp); kfree(rqstp->rq_auth_data); From patchwork Fri Nov 20 20:34:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922237 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 26E08C56202 for ; Fri, 20 Nov 2020 20:34:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BF5E62223F for ; Fri, 20 Nov 2020 20:34:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jf4h7IjP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731073AbgKTUeL (ORCPT ); Fri, 20 Nov 2020 15:34:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731069AbgKTUeK (ORCPT ); Fri, 20 Nov 2020 15:34:10 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8FCBDC0613CF for ; Fri, 20 Nov 2020 12:34:10 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id l2so10257376qkf.0 for ; Fri, 20 Nov 2020 12:34:10 -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=oOib9VNxoQSYKUlUR/KD0VTeAaH+4fj5V/AXekeKXsc=; b=jf4h7IjPI2D3aEZZoC83KaUrk1tpDQefPpMQFvTlkzRmILY7oXV+V3xm3oe6OX1i9z VyYYrVPStM6A52R6NrGj0zklUPam7W9wV1oy0oi937YHUGIOLgDyp4wsyp3Kc+UnIr1a yolZTtlTyN5HejE2ILUafcp8QeNyyNORmjxYeIWyK8NSKlw68zlfE7drI6cdRKzOhNTU 9hfMuVbokHUdTN7WkSDRVCTae8ZCGfRe8IbyRJ+vulrdKbQEeZB8SfdlOt6ph3y48MRh PB6jJloTpNLkFSqnvnJ7j8Sc+fN/t5mxtW8JFv3OTZL6edagCTZ5xkPpahyR6+Hthn5A oSVw== 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=oOib9VNxoQSYKUlUR/KD0VTeAaH+4fj5V/AXekeKXsc=; b=ACZjnm1bH+JgMGsLnaDIwmNiy0sJes8aM+Sy4sHgfs0t8ivuDMOLhqNYBOKOCfI+hl lsS/0sAqOlv4iUrCKiNl7f4LVpKILdfkGdC1DRfJA7pnX4OUDfV/HZKk+zw41sstq+jT IG10LNvzCAcuKCHZTUMHTNjhzVd5RPAQ0+LJJDIYVCwm6dlQqeNXNegq6Fwknnvce1kM qcyUGSE8lglGyYkP1xb4RUrn5Boa7CyP36+zbp7j1zF+lfDTAsRgvPXuRSkg19jmJLQd l/Dx1c7OREZuMWtahn3gC4+3Fs3/kDivLaHNLjhWihFnPuC/uYHVP+jyGm6yQi5HP8rY fBpg== X-Gm-Message-State: AOAM5328cw03QpvUqJhbm5ruFODFcggdWQH08aqcyIIXadsQRqOcwfve O3szFiXfCW+XqnrC5sAvsnnkDsas2ao= X-Google-Smtp-Source: ABdhPJygfl2WcMXGDGU7BL1Dp+T3na7LqrpiPIiKISjIgjhBGNnslLbXQCRWFjCyAT1RMh5QCF0INA== X-Received: by 2002:a05:620a:554:: with SMTP id o20mr18391941qko.394.1605904449180; Fri, 20 Nov 2020 12:34:09 -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 x21sm2700785qkx.31.2020.11.20.12.34.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:08 -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 0AKKY7pA029214 for ; Fri, 20 Nov 2020 20:34:07 GMT Subject: [PATCH v2 004/118] NFSD: Add common helpers to decode void args and encode void results From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:07 -0500 Message-ID: <160590444737.1340.6496659118224769578.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Start off the conversion to xdr_stream by de-duplicating the functions that decode void arguments and encode void results. Signed-off-by: Chuck Lever --- fs/nfsd/nfs2acl.c | 21 ++++----------------- fs/nfsd/nfs3acl.c | 8 ++++---- fs/nfsd/nfs3proc.c | 10 ++++------ fs/nfsd/nfs3xdr.c | 11 ----------- fs/nfsd/nfs4proc.c | 8 ++++---- fs/nfsd/nfs4xdr.c | 12 ------------ fs/nfsd/nfsd.h | 8 ++++++++ fs/nfsd/nfsproc.c | 25 ++++++++++++------------- fs/nfsd/nfssvc.c | 23 +++++++++++++++++++++++ fs/nfsd/nfsxdr.c | 10 ---------- fs/nfsd/xdr.h | 2 -- fs/nfsd/xdr3.h | 2 -- fs/nfsd/xdr4.h | 2 -- 13 files changed, 59 insertions(+), 83 deletions(-) diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index 6a900f770dd2..b0f66604532a 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c @@ -185,10 +185,6 @@ static __be32 nfsacld_proc_access(struct svc_rqst *rqstp) /* * XDR decode functions */ -static int nfsaclsvc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p) -{ - return 1; -} static int nfsaclsvc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) { @@ -255,15 +251,6 @@ static int nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) * XDR encode functions */ -/* - * There must be an encoding function for void results so svc_process - * will work properly. - */ -static int nfsaclsvc_encode_voidres(struct svc_rqst *rqstp, __be32 *p) -{ - return xdr_ressize_check(rqstp, p); -} - /* GETACL */ static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p) { @@ -378,10 +365,10 @@ struct nfsd3_voidargs { int dummy; }; static const struct svc_procedure nfsd_acl_procedures2[5] = { [ACLPROC2_NULL] = { .pc_func = nfsacld_proc_null, - .pc_decode = nfsaclsvc_decode_voidarg, - .pc_encode = nfsaclsvc_encode_voidres, - .pc_argsize = sizeof(struct nfsd3_voidargs), - .pc_ressize = sizeof(struct nfsd3_voidargs), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST, }, diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c index 34a394e50e1d..7c30876a31a1 100644 --- a/fs/nfsd/nfs3acl.c +++ b/fs/nfsd/nfs3acl.c @@ -245,10 +245,10 @@ struct nfsd3_voidargs { int dummy; }; static const struct svc_procedure nfsd_acl_procedures3[3] = { [ACLPROC3_NULL] = { .pc_func = nfsd3_proc_null, - .pc_decode = nfs3svc_decode_voidarg, - .pc_encode = nfs3svc_encode_voidres, - .pc_argsize = sizeof(struct nfsd3_voidargs), - .pc_ressize = sizeof(struct nfsd3_voidargs), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST, }, diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index e0ad18d6b5a8..581a93b17bee 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -693,8 +693,6 @@ nfsd3_proc_commit(struct svc_rqst *rqstp) #define nfsd3_attrstatres nfsd3_attrstat #define nfsd3_wccstatres nfsd3_attrstat #define nfsd3_createres nfsd3_diropres -#define nfsd3_voidres nfsd3_voidargs -struct nfsd3_voidargs { int dummy; }; #define ST 1 /* status*/ #define FH 17 /* filehandle with length */ @@ -705,10 +703,10 @@ struct nfsd3_voidargs { int dummy; }; static const struct svc_procedure nfsd_procedures3[22] = { [NFS3PROC_NULL] = { .pc_func = nfsd3_proc_null, - .pc_decode = nfs3svc_decode_voidarg, - .pc_encode = nfs3svc_encode_voidres, - .pc_argsize = sizeof(struct nfsd3_voidargs), - .pc_ressize = sizeof(struct nfsd3_voidres), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST, }, diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 186b07a72373..a6718b952975 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -304,11 +304,6 @@ void fill_post_wcc(struct svc_fh *fhp) /* * XDR decode functions */ -int -nfs3svc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p) -{ - return 1; -} int nfs3svc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p) @@ -642,12 +637,6 @@ nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p) * XDR encode functions */ -int -nfs3svc_encode_voidres(struct svc_rqst *rqstp, __be32 *p) -{ - return xdr_ressize_check(rqstp, p); -} - /* GETATTR */ int nfs3svc_encode_attrstat(struct svc_rqst *rqstp, __be32 *p) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 20772f6b0b2d..9280740941db 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -3301,10 +3301,10 @@ struct nfsd4_voidargs { int dummy; }; static const struct svc_procedure nfsd_procedures4[2] = { [NFSPROC4_NULL] = { .pc_func = nfsd4_proc_null, - .pc_decode = nfs4svc_decode_voidarg, - .pc_encode = nfs4svc_encode_voidres, - .pc_argsize = sizeof(struct nfsd4_voidargs), - .pc_ressize = sizeof(struct nfsd4_voidres), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 1, }, diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 66274ad05a9c..6c3d45f68b75 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -5271,12 +5271,6 @@ nfsd4_encode_replay(struct xdr_stream *xdr, struct nfsd4_op *op) p = xdr_encode_opaque_fixed(p, rp->rp_buf, rp->rp_buflen); } -int -nfs4svc_encode_voidres(struct svc_rqst *rqstp, __be32 *p) -{ - return xdr_ressize_check(rqstp, p); -} - void nfsd4_release_compoundargs(struct svc_rqst *rqstp) { struct nfsd4_compoundargs *args = rqstp->rq_argp; @@ -5294,12 +5288,6 @@ void nfsd4_release_compoundargs(struct svc_rqst *rqstp) } } -int -nfs4svc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p) -{ - return 1; -} - int nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p) { diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h index cb742e17e04a..7907de3f2ee6 100644 --- a/fs/nfsd/nfsd.h +++ b/fs/nfsd/nfsd.h @@ -73,6 +73,14 @@ extern unsigned long nfsd_drc_mem_used; extern const struct seq_operations nfs_exports_op; +/* + * Common void argument and result helpers + */ +struct nfsd_voidargs { }; +struct nfsd_voidres { }; +int nfssvc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p); +int nfssvc_encode_voidres(struct svc_rqst *rqstp, __be32 *p); + /* * Function prototypes. */ diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 0d71549f9d42..9473d048efec 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -609,7 +609,6 @@ nfsd_proc_statfs(struct svc_rqst *rqstp) * NFSv2 Server procedures. * Only the results of non-idempotent operations are cached. */ -struct nfsd_void { int dummy; }; #define ST 1 /* status */ #define FH 8 /* filehandle */ @@ -618,10 +617,10 @@ struct nfsd_void { int dummy; }; static const struct svc_procedure nfsd_procedures2[18] = { [NFSPROC_NULL] = { .pc_func = nfsd_proc_null, - .pc_decode = nfssvc_decode_void, - .pc_encode = nfssvc_encode_void, - .pc_argsize = sizeof(struct nfsd_void), - .pc_ressize = sizeof(struct nfsd_void), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 0, }, @@ -647,10 +646,10 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_ROOT] = { .pc_func = nfsd_proc_root, - .pc_decode = nfssvc_decode_void, - .pc_encode = nfssvc_encode_void, - .pc_argsize = sizeof(struct nfsd_void), - .pc_ressize = sizeof(struct nfsd_void), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 0, }, @@ -685,10 +684,10 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_WRITECACHE] = { .pc_func = nfsd_proc_writecache, - .pc_decode = nfssvc_decode_void, - .pc_encode = nfssvc_encode_void, - .pc_argsize = sizeof(struct nfsd_void), - .pc_ressize = sizeof(struct nfsd_void), + .pc_decode = nfssvc_decode_voidarg, + .pc_encode = nfssvc_encode_voidres, + .pc_argsize = sizeof(struct nfsd_voidargs), + .pc_ressize = sizeof(struct nfsd_voidres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = 0, }, diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index daeab72975a3..cae6fbf10514 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -28,6 +28,7 @@ #include "vfs.h" #include "netns.h" #include "filecache.h" +#include "xdr.h" #define NFSDDBG_FACILITY NFSDDBG_SVC @@ -1075,6 +1076,28 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) return 1; } +/** + * nfssvc_decode_voidarg - Decode void arguments + * @rqstp: Server RPC transaction context + * @p: buffer containing arguments to decode + * + */ +int nfssvc_decode_voidarg(struct svc_rqst *rqstp, __be32 *p) +{ + return XDR_DECODE_DONE; +} + +/** + * nfssvc_encode_voidres - Encode void results + * @rqstp: Server RPC transaction context + * @p: buffer in which to encode results + * + */ +int nfssvc_encode_voidres(struct svc_rqst *rqstp, __be32 *p) +{ + return xdr_ressize_check(rqstp, p); +} + int nfsd_pool_stats_open(struct inode *inode, struct file *file) { int ret; diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 9e00a902113e..7aa6e8aca2c1 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -192,11 +192,6 @@ __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *f /* * XDR decode functions */ -int -nfssvc_decode_void(struct svc_rqst *rqstp, __be32 *p) -{ - return xdr_argsize_check(rqstp, p); -} int nfssvc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p) @@ -423,11 +418,6 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) /* * XDR encode functions */ -int -nfssvc_encode_void(struct svc_rqst *rqstp, __be32 *p) -{ - return xdr_ressize_check(rqstp, p); -} int nfssvc_encode_stat(struct svc_rqst *rqstp, __be32 *p) diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index 0ff336b0b25f..ad77387734cc 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -144,7 +144,6 @@ union nfsd_xdrstore { #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore) -int nfssvc_decode_void(struct svc_rqst *, __be32 *); int nfssvc_decode_fhandle(struct svc_rqst *, __be32 *); int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *); int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *); @@ -156,7 +155,6 @@ int nfssvc_decode_readlinkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *); -int nfssvc_encode_void(struct svc_rqst *, __be32 *); int nfssvc_encode_stat(struct svc_rqst *, __be32 *); int nfssvc_encode_attrstat(struct svc_rqst *, __be32 *); int nfssvc_encode_diropres(struct svc_rqst *, __be32 *); diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index ae6fa6c9cb46..456fcd7a1038 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -273,7 +273,6 @@ union nfsd3_xdrstore { #define NFS3_SVC_XDRSIZE sizeof(union nfsd3_xdrstore) -int nfs3svc_decode_voidarg(struct svc_rqst *, __be32 *); int nfs3svc_decode_fhandle(struct svc_rqst *, __be32 *); int nfs3svc_decode_sattrargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_diropargs(struct svc_rqst *, __be32 *); @@ -290,7 +289,6 @@ int nfs3svc_decode_symlinkargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_readdirargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_readdirplusargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_commitargs(struct svc_rqst *, __be32 *); -int nfs3svc_encode_voidres(struct svc_rqst *, __be32 *); int nfs3svc_encode_attrstat(struct svc_rqst *, __be32 *); int nfs3svc_encode_wccstat(struct svc_rqst *, __be32 *); int nfs3svc_encode_diropres(struct svc_rqst *, __be32 *); diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 679d40af1bbb..37f89ad5e992 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -781,8 +781,6 @@ set_change_info(struct nfsd4_change_info *cinfo, struct svc_fh *fhp) bool nfsd4_mach_creds_match(struct nfs4_client *cl, struct svc_rqst *rqstp); -int nfs4svc_decode_voidarg(struct svc_rqst *, __be32 *); -int nfs4svc_encode_voidres(struct svc_rqst *, __be32 *); int nfs4svc_decode_compoundargs(struct svc_rqst *, __be32 *); int nfs4svc_encode_compoundres(struct svc_rqst *, __be32 *); __be32 nfsd4_check_resp_size(struct nfsd4_compoundres *, u32); From patchwork Fri Nov 20 20:34:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922241 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 079DDC63777 for ; Fri, 20 Nov 2020 20:34:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A84892223F for ; Fri, 20 Nov 2020 20:34:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OSinXrL9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731069AbgKTUeT (ORCPT ); Fri, 20 Nov 2020 15:34:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60658 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731222AbgKTUeQ (ORCPT ); Fri, 20 Nov 2020 15:34:16 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E9A52C0613CF for ; Fri, 20 Nov 2020 12:34:15 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id z17so5289348qvy.11 for ; Fri, 20 Nov 2020 12:34:15 -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=1SBh0PocqNOC2aNr3BzfT1K14SWz72rII+MBzjZbLgc=; b=OSinXrL9v5VIsh1QB1RIwvPkkUtfbxizzxssQj/fW0MbVBpg80nKfbmmT6bQ8YnKML jV5x2kHcgdQz5me5k4WR03Kvx35Y6gW7VTRYgK/jP0pJTmVF7J3dcQrUfxBl1NuNHEdh aBKDe2KOuI3hJr0i61OSCq79W2v/05VihV8EH+y5rupomLZaYDdg08kqi70By06+jWQz iFHEPlxCnmWg0U8sux7hmqzEt6dDv/58Gt93UQkBNPjXquH9jOUxDTJ7C8+3xYUs9EXl MwsX4iSUqjUKySsj9jtI2fjAXvP14eiba/JDh7KvJDtR04PXyhgJnkOUAZpa0rHHBuu4 e9OQ== 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=1SBh0PocqNOC2aNr3BzfT1K14SWz72rII+MBzjZbLgc=; b=HsNfn9TvIGEj7m/TtBKDUr0MPxqJD551z9t8bxcBSscUsHHxV7hnhfAdb5f2c2J+HK l87D1SPyDsMv5v0AI4GoifZjJne9PDgHurmUCs1KZMIZfdzECUJjQ7iZ3eXdjDnccOcC x0+q73z03ld6cs5XWyKpIx1xoEOC9JhqE4+mhAKiKSgCNnhs2uQp266zSyCHhUBwtOyJ D1cOcaJ+boJLYiVJiskSJtmlQOSyujqFDQLZimBzVaaYAe4/oKLk66ck4MzuD9ZIsvHX Yj2kknMlk79wU/VJ0L+gPhS7KF+1tfZAlv7gR22bv9OIfWH1r+BQWGUtKr0DJaRRRCG6 ug3w== X-Gm-Message-State: AOAM533VVwPRVbuzq20KvPHr/rG6Kg8ag0Zg9O1a5ekXxXpLRofJ3s7u UAOF+9UK9RMaELDOsenY5gU0qBJ651c= X-Google-Smtp-Source: ABdhPJyb82nHAIXQDD1SYVABqAu2mMCxohmeYOyB8Er21HguOSJrx6FreGwwG/s6gXvY7HYxzFlq8A== X-Received: by 2002:a0c:a94b:: with SMTP id z11mr13773459qva.24.1605904454564; Fri, 20 Nov 2020 12:34:14 -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 h26sm2805197qkh.127.2020.11.20.12.34.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:13 -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 0AKKYCKU029217 for ; Fri, 20 Nov 2020 20:34:12 GMT Subject: [PATCH v2 005/118] NFSD: Replace the internals of the READ_BUF() macro From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:12 -0500 Message-ID: <160590445271.1340.9408337302317384948.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Convert the READ_BUF macro in nfs4xdr.c from open code to instead use the new xdr_stream-style decoders already in use by the encode side (and by the in-kernel NFS client implementation). Once this conversion is done, each individual NFSv4 argument decoder can be independently cleaned up to replace these macros with C code. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4proc.c | 4 - fs/nfsd/nfs4xdr.c | 181 ++++++-------------------------------------- fs/nfsd/xdr4.h | 10 -- include/linux/sunrpc/xdr.h | 2 net/sunrpc/xdr.c | 44 +++++++++++ 5 files changed, 76 insertions(+), 165 deletions(-) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 9280740941db..dc5c9fb1888b 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1023,8 +1023,8 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, write->wr_how_written = write->wr_stable_how; - nvecs = svc_fill_write_vector(rqstp, write->wr_pagelist, - &write->wr_head, write->wr_buflen); + nvecs = svc_fill_write_vector(rqstp, write->wr_payload.pages, + write->wr_payload.head, write->wr_buflen); WARN_ON_ONCE(nvecs > ARRAY_SIZE(rqstp->rq_vec)); status = nfsd_vfs_write(rqstp, &cstate->current_fh, nf, diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 6c3d45f68b75..26265d649c39 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -129,90 +129,13 @@ xdr_error: \ memcpy((x), p, nbytes); \ p += XDR_QUADLEN(nbytes); \ } while (0) - -/* READ_BUF, read_buf(): nbytes must be <= PAGE_SIZE */ -#define READ_BUF(nbytes) do { \ - if (nbytes <= (u32)((char *)argp->end - (char *)argp->p)) { \ - p = argp->p; \ - argp->p += XDR_QUADLEN(nbytes); \ - } else if (!(p = read_buf(argp, nbytes))) { \ - dprintk("NFSD: xdr error (%s:%d)\n", \ - __FILE__, __LINE__); \ - goto xdr_error; \ - } \ -} while (0) - -static void next_decode_page(struct nfsd4_compoundargs *argp) -{ - argp->p = page_address(argp->pagelist[0]); - argp->pagelist++; - if (argp->pagelen < PAGE_SIZE) { - argp->end = argp->p + XDR_QUADLEN(argp->pagelen); - argp->pagelen = 0; - } else { - argp->end = argp->p + (PAGE_SIZE>>2); - argp->pagelen -= PAGE_SIZE; - } -} - -static __be32 *read_buf(struct nfsd4_compoundargs *argp, u32 nbytes) -{ - /* We want more bytes than seem to be available. - * Maybe we need a new page, maybe we have just run out - */ - unsigned int avail = (char *)argp->end - (char *)argp->p; - __be32 *p; - - if (argp->pagelen == 0) { - struct kvec *vec = &argp->rqstp->rq_arg.tail[0]; - - if (!argp->tail) { - argp->tail = true; - avail = vec->iov_len; - argp->p = vec->iov_base; - argp->end = vec->iov_base + avail; - } - - if (avail < nbytes) - return NULL; - - p = argp->p; - argp->p += XDR_QUADLEN(nbytes); - return p; - } - - if (avail + argp->pagelen < nbytes) - return NULL; - if (avail + PAGE_SIZE < nbytes) /* need more than a page !! */ - return NULL; - /* ok, we can do it with the current plus the next page */ - if (nbytes <= sizeof(argp->tmp)) - p = argp->tmp; - else { - kfree(argp->tmpp); - p = argp->tmpp = kmalloc(nbytes, GFP_KERNEL); - if (!p) - return NULL; - - } - /* - * The following memcpy is safe because read_buf is always - * called with nbytes > avail, and the two cases above both - * guarantee p points to at least nbytes bytes. - */ - memcpy(p, argp->p, avail); - next_decode_page(argp); - memcpy(((char*)p)+avail, argp->p, (nbytes - avail)); - argp->p += XDR_QUADLEN(nbytes - avail); - return p; -} - -static unsigned int compoundargs_bytes_left(struct nfsd4_compoundargs *argp) -{ - unsigned int this = (char *)argp->end - (char *)argp->p; - - return this + argp->pagelen; -} +#define READ_BUF(nbytes) \ + do { \ + p = xdr_inline_decode(argp->xdr,\ + nbytes); \ + if (!p) \ + goto xdr_error; \ + } while (0) static int zero_clientid(clientid_t *clid) { @@ -259,44 +182,6 @@ svcxdr_dupstr(struct nfsd4_compoundargs *argp, void *buf, u32 len) return p; } -static __be32 -svcxdr_construct_vector(struct nfsd4_compoundargs *argp, struct kvec *head, - struct page ***pagelist, u32 buflen) -{ - int avail; - int len; - int pages; - - /* Sorry .. no magic macros for this.. * - * READ_BUF(write->wr_buflen); - * SAVEMEM(write->wr_buf, write->wr_buflen); - */ - avail = (char *)argp->end - (char *)argp->p; - if (avail + argp->pagelen < buflen) { - dprintk("NFSD: xdr error (%s:%d)\n", - __FILE__, __LINE__); - return nfserr_bad_xdr; - } - head->iov_base = argp->p; - head->iov_len = avail; - *pagelist = argp->pagelist; - - len = XDR_QUADLEN(buflen) << 2; - if (len >= avail) { - len -= avail; - - pages = len >> PAGE_SHIFT; - argp->pagelist += pages; - argp->pagelen -= pages * PAGE_SIZE; - len -= pages * PAGE_SIZE; - - next_decode_page(argp); - } - argp->p += XDR_QUADLEN(len); - - return 0; -} - /** * savemem - duplicate a chunk of memory for later processing * @argp: NFSv4 compound argument structure to be freed with @@ -396,7 +281,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, READ_BUF(4); len += 4; nace = be32_to_cpup(p++); - if (nace > compoundargs_bytes_left(argp)/20) + if (nace > xdr_stream_remaining(argp->xdr) / sizeof(struct nfs4_ace)) /* * Even with 4-byte names there wouldn't be * space for that many aces; something fishy is @@ -927,7 +812,7 @@ static __be32 nfsd4_decode_share_deny(struct nfsd4_compoundargs *argp, u32 *x) static __be32 nfsd4_decode_opaque(struct nfsd4_compoundargs *argp, struct xdr_netobj *o) { - __be32 *p; + DECODE_HEAD; READ_BUF(4); o->len = be32_to_cpup(p++); @@ -937,9 +822,8 @@ static __be32 nfsd4_decode_opaque(struct nfsd4_compoundargs *argp, struct xdr_ne READ_BUF(o->len); SAVEMEM(o->data, o->len); - return nfs_ok; -xdr_error: - return nfserr_bad_xdr; + + DECODE_TAIL; } static __be32 @@ -1317,10 +1201,8 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) goto xdr_error; write->wr_buflen = be32_to_cpup(p++); - status = svcxdr_construct_vector(argp, &write->wr_head, - &write->wr_pagelist, write->wr_buflen); - if (status) - return status; + if (!xdr_stream_subsegment(argp->xdr, &write->wr_payload, write->wr_buflen)) + goto xdr_error; DECODE_TAIL; } @@ -1889,13 +1771,14 @@ nfsd4_decode_seek(struct nfsd4_compoundargs *argp, struct nfsd4_seek *seek) */ /* - * Decode data into buffer. Uses head and pages constructed by - * svcxdr_construct_vector. + * Decode data into buffer. */ static __be32 -nfsd4_vbuf_from_vector(struct nfsd4_compoundargs *argp, struct kvec *head, - struct page **pages, char **bufp, u32 buflen) +nfsd4_vbuf_from_vector(struct nfsd4_compoundargs *argp, struct xdr_buf *xdr, + char **bufp, u32 buflen) { + struct page **pages = xdr->pages; + struct kvec *head = xdr->head; char *tmp, *dp; u32 len; @@ -2010,8 +1893,6 @@ nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, { DECODE_HEAD; u32 flags, maxcount, size; - struct kvec head; - struct page **pagelist; READ_BUF(4); flags = be32_to_cpup(p++); @@ -2034,12 +1915,12 @@ nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, setxattr->setxa_len = size; if (size > 0) { - status = svcxdr_construct_vector(argp, &head, &pagelist, size); - if (status) - return status; + struct xdr_buf payload; - status = nfsd4_vbuf_from_vector(argp, &head, pagelist, - &setxattr->setxa_buf, size); + if (!xdr_stream_subsegment(argp->xdr, &payload, size)) + goto xdr_error; + status = nfsd4_vbuf_from_vector(argp, &payload, + &setxattr->setxa_buf, size); } DECODE_TAIL; @@ -5279,8 +5160,6 @@ void nfsd4_release_compoundargs(struct svc_rqst *rqstp) kfree(args->ops); args->ops = args->iops; } - kfree(args->tmpp); - args->tmpp = NULL; while (args->to_free) { struct svcxdr_tmpbuf *tb = args->to_free; args->to_free = tb->next; @@ -5293,19 +5172,11 @@ nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd4_compoundargs *args = rqstp->rq_argp; - if (rqstp->rq_arg.head[0].iov_len % 4) { - /* client is nuts */ - dprintk("%s: compound not properly padded! (peeraddr=%pISc xid=0x%x)", - __func__, svc_addr(rqstp), be32_to_cpu(rqstp->rq_xid)); - return 0; - } - args->p = p; - args->end = rqstp->rq_arg.head[0].iov_base + rqstp->rq_arg.head[0].iov_len; - args->pagelist = rqstp->rq_arg.pages; - args->pagelen = rqstp->rq_arg.page_len; - args->tail = false; + /* svcxdr_tmp_alloc */ args->tmpp = NULL; args->to_free = NULL; + + args->xdr = &rqstp->rq_xdr_stream; args->ops = args->iops; args->rqstp = rqstp; diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 37f89ad5e992..0eb13bd603ea 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -419,8 +419,7 @@ struct nfsd4_write { u64 wr_offset; /* request */ u32 wr_stable_how; /* request */ u32 wr_buflen; /* request */ - struct kvec wr_head; - struct page ** wr_pagelist; /* request */ + struct xdr_buf wr_payload; /* request */ u32 wr_bytes_written; /* response */ u32 wr_how_written; /* response */ @@ -696,15 +695,10 @@ struct svcxdr_tmpbuf { struct nfsd4_compoundargs { /* scratch variables for XDR decode */ - __be32 * p; - __be32 * end; - struct page ** pagelist; - int pagelen; - bool tail; __be32 tmp[8]; __be32 * tmpp; + struct xdr_stream *xdr; struct svcxdr_tmpbuf *to_free; - struct svc_rqst *rqstp; u32 taglen; diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index abbb032de4e8..8f458addfcf0 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -259,6 +259,8 @@ extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); extern int xdr_process_buf(struct xdr_buf *buf, unsigned int offset, unsigned int len, int (*actor)(struct scatterlist *, void *), void *data); extern uint64_t xdr_align_data(struct xdr_stream *, uint64_t, uint32_t); extern uint64_t xdr_expand_hole(struct xdr_stream *, uint64_t, uint64_t); +extern bool xdr_stream_subsegment(struct xdr_stream *xdr, struct xdr_buf *subbuf, + unsigned int len); /** * xdr_set_scratch_buffer - Attach a scratch buffer for decoding data. diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c index c607744b3ea8..272c9d566e6a 100644 --- a/net/sunrpc/xdr.c +++ b/net/sunrpc/xdr.c @@ -1407,6 +1407,50 @@ int xdr_buf_subsegment(const struct xdr_buf *buf, struct xdr_buf *subbuf, } EXPORT_SYMBOL_GPL(xdr_buf_subsegment); +/** + * xdr_stream_subsegment - set @subbuf to a portion of @xdr + * @xdr: an xdr_stream set up for decoding + * @subbuf: the result buffer + * @nbytes: length of @xdr to extract, in bytes + * + * Sets up @subbuf to represent a portion of @xdr. The portion + * starts at the current offset in @xdr, and extends for a length + * of @nbytes. If this is successful, @xdr is advanced to the next + * position following that portion. + * + * Return values: + * %true: @subbuf has been initialized, and @xdr has been advanced. + * %false: a bounds error occurred; @xdr is unchanged. + */ +bool xdr_stream_subsegment(struct xdr_stream *xdr, struct xdr_buf *subbuf, + unsigned int nbytes) +{ + unsigned int len, remaining, offset; + + if (xdr_buf_subsegment(xdr->buf, subbuf, xdr_stream_pos(xdr), nbytes)) + return false; + + if (subbuf->head[0].iov_len) + __xdr_inline_decode(xdr, subbuf->head[0].iov_len); + + remaining = subbuf->page_len; + offset = subbuf->page_base; + while (remaining) { + len = min_t(unsigned int, remaining, PAGE_SIZE); + len -= offset; + + if (xdr->p == xdr->end) + xdr_set_next_buffer(xdr); + __xdr_inline_decode(xdr, len); + + remaining -= len; + offset = 0; + } + + return true; +} +EXPORT_SYMBOL_GPL(xdr_stream_subsegment); + /** * xdr_buf_trim - lop at most "len" bytes off the end of "buf" * @buf: buf to be trimmed From patchwork Fri Nov 20 20:34:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922239 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 734DDC63798 for ; Fri, 20 Nov 2020 20:34:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2BD6524124 for ; Fri, 20 Nov 2020 20:34:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bR/S5KkW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731222AbgKTUeV (ORCPT ); Fri, 20 Nov 2020 15:34:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731207AbgKTUeV (ORCPT ); Fri, 20 Nov 2020 15:34:21 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF8D1C0613CF for ; Fri, 20 Nov 2020 12:34:20 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id q5so10158593qkc.12 for ; Fri, 20 Nov 2020 12:34:20 -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=meH4fCLXyngkR+1OJ/A3X63+mI0F3gkdAnX+tussGLQ=; b=bR/S5KkWWxkLWgKg1e0XJLM76xmI8uKedGgBmV3T75j4IidG1zMYVTKG//oPuNpUmr uJITjgvMsE6i2K9CVvqTZOWEYC6lqhQFmw4eXt2GSyudAr/YKp3Yzq0O3apjcUluIabl eer4kVoiuDXJGG9pf4jCD0+Y9B6mmvzS5rlrsuMy65aAjFCLrNDDtXTXIlXTtjVxl7ZY +wJRMGWEb2LbZ/VyoIkgRLb2Xjym1bkH0b5bpvJc5tfQXgLgNP82xcz0aZgfj43SC7Kk M5iPwELNIFbXfKWM2Or3tOUcK81Q6360CW4PFcN5k3CakFp4fmI1IW11IxGMxsyMUH27 AUzw== 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=meH4fCLXyngkR+1OJ/A3X63+mI0F3gkdAnX+tussGLQ=; b=GCzgaZFYrIyX2eTDaQkMekDvA9UxeTIbhw2/CyTh7iLtzY6AOAElQ39lcrekozJAI2 S2bHwS4hfoFS79pI5ZbG4qiBZMXeefQXS3FNDQSfZigX9W16rL12+7DbalL2nTCr6jmd xmvSwzP/tDLD0y61ZlDt9q4IyXbQctsP8YdRia2+gb0sp3fCYxUtN2Xff1jr8W+b0r/R 0sh9Dayb/ewpGYd5hFQdnFte75eL/+MIsMk15HmO8tzggwOqD/jwaNjGtCHDSS6Oz44H BUOp91Zt7ivO0M9ZaNNvJgXBoDfyXEtOVNmJM4d3Ec3m7nni2hBBKSLvCc5O0C/6tQJJ 2swg== X-Gm-Message-State: AOAM532ycSC83R6e4TItH7bDHdYhhwUOjtPJM0dniWddQaExxtcedUva o7bfzxjhzA8ia4PGSl0DKIW5FMt3I2E= X-Google-Smtp-Source: ABdhPJzD3TwCNa+1jxtUL9mYcI6gv2jzCTD+oIruzCTfssbKoErLbqMHWAXLBHTOo0PQ5rGo9J8DtA== X-Received: by 2002:a37:517:: with SMTP id 23mr19171382qkf.333.1605904459743; Fri, 20 Nov 2020 12:34:19 -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 p188sm2804106qkb.60.2020.11.20.12.34.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:18 -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 0AKKYITm029220 for ; Fri, 20 Nov 2020 20:34:18 GMT Subject: [PATCH v2 006/118] NFSD: Replace READ* macros in nfsd4_decode_access() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:18 -0500 Message-ID: <160590445804.1340.14356465427456109514.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 26265d649c39..5ef14c41fabe 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -437,17 +437,6 @@ nfsd4_decode_stateid(struct nfsd4_compoundargs *argp, stateid_t *sid) DECODE_TAIL; } -static __be32 -nfsd4_decode_access(struct nfsd4_compoundargs *argp, struct nfsd4_access *access) -{ - DECODE_HEAD; - - READ_BUF(4); - access->ac_req_access = be32_to_cpup(p++); - - DECODE_TAIL; -} - static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) { DECODE_HEAD; @@ -529,6 +518,19 @@ static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_ DECODE_TAIL; } +/* + * NFSv4 operation argument decoders + */ + +static __be32 +nfsd4_decode_access(struct nfsd4_compoundargs *argp, + struct nfsd4_access *access) +{ + if (xdr_stream_decode_u32(argp->xdr, &access->ac_req_access) < 0) + return nfserr_bad_xdr; + return nfs_ok; +} + static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, struct nfsd4_backchannel_ctl *bc) { DECODE_HEAD; From patchwork Fri Nov 20 20:34:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922243 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BF9DEC64E69 for ; Fri, 20 Nov 2020 20:34:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5F8E922D0A for ; Fri, 20 Nov 2020 20:34:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fXTgW6KV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731375AbgKTUe0 (ORCPT ); Fri, 20 Nov 2020 15:34:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60686 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731207AbgKTUe0 (ORCPT ); Fri, 20 Nov 2020 15:34:26 -0500 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 01047C0613CF for ; Fri, 20 Nov 2020 12:34:26 -0800 (PST) Received: by mail-qt1-x842.google.com with SMTP id b16so8111704qtb.6 for ; Fri, 20 Nov 2020 12:34:25 -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=KZmzsQKEKT00RlpYJLgR749zMr7KPAOcy56jG6x7lwg=; b=fXTgW6KVKeknarAkk7BsyMG0subZ6s31dNqitcD0nHbRUQTTKO6U8CC/aUOqYnOzjI xyGnYML/82rK2SbwjFAz+V/NK6C55X5KGXn2kxDKrQ2Rt8q9K9ipSIS2G/aXFskgD95+ o937/Aq+OiRDlk7TRsNzuS7ELWiMcMQGddhDt4EUh3aNQmEA3+Xc5E8QOPXR6zPgd7FK SHUNqGHFW0uMwCZ7YpFqvexL84IaoS20ygTOA8pDIQBscQZ4udGJ7pINc8wJQNXj2gsK bA5zsdQY0VjRqS+HKWhmfYwUW6pwYuJAD5tu6fwz/XzYl8AHCIhhjcYqxLQA8zcGDTHX +ClQ== 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=KZmzsQKEKT00RlpYJLgR749zMr7KPAOcy56jG6x7lwg=; b=b6qlLhIJCCgKKMS5WPkC8DejXS5HW214CwkFW7bvXeVwKlQbg7TpFZwUEADhUbk6Dt j+Mbov/0BCHn1fzzFVog+0Ib0ysvHDHvT8mCX4a/4b6NgmD5v0nFX2KmxvGcd3fJ/QCN mrLRaae/4y0s3SLSe4BDxLLMk6cluRA3NW6YJwqfFLfGSIjAED9CNDKTnwfIrEg7fQkr T3IJwcDOYiZV0QdpLonZxdSfi+mITbx6PrpgudBMcmbNfKQpcsj//WJneK98S+3OmPLQ nM/Jx6R6GMXS1qLi97n+3ySHSaRFB+wU+PQifmHZCxmtZ5yvKfHoWT4Y2yz7heVO/pPo jV2g== X-Gm-Message-State: AOAM532mGINaGSltKQ49ltPkjqqTrTuyUVA+pKkPxVNesnIACtNYVV7H N7+K/EDXZPPCHXiiywSjw1/0SiQvKRE= X-Google-Smtp-Source: ABdhPJyodKEN+QCq19ABOLG7LdKvkswzmzQE+icwEerfesPp+xJt9koGGxabWwLxcVJdc+Ru049p1g== X-Received: by 2002:ac8:3499:: with SMTP id w25mr17092230qtb.44.1605904464828; Fri, 20 Nov 2020 12:34:24 -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 q20sm2712879qke.0.2020.11.20.12.34.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:24 -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 0AKKYNqC029223 for ; Fri, 20 Nov 2020 20:34:23 GMT Subject: [PATCH v2 007/118] NFSD: Replace READ* macros in nfsd4_decode_stateid() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:23 -0500 Message-ID: <160590446314.1340.5000887327010395359.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org And also rename it to reflect the actual name of the stateid4 type defined in RFC 8881. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 61 +++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 5ef14c41fabe..027582d682ae 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -426,15 +426,16 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, } static __be32 -nfsd4_decode_stateid(struct nfsd4_compoundargs *argp, stateid_t *sid) +nfsd4_decode_stateid4(struct nfsd4_compoundargs *argp, stateid_t *sid) { - DECODE_HEAD; + __be32 *p; - READ_BUF(sizeof(stateid_t)); + p = xdr_inline_decode(argp->xdr, NFS4_STATEID_SIZE); + if (!p) + return nfserr_bad_xdr; sid->si_generation = be32_to_cpup(p++); - COPYMEM(&sid->si_opaque, sizeof(stateid_opaque_t)); - - DECODE_TAIL; + memcpy(&sid->si_opaque, p, sizeof(sid->si_opaque)); + return nfs_ok; } static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) @@ -561,7 +562,7 @@ nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close) READ_BUF(4); close->cl_seqid = be32_to_cpup(p++); - return nfsd4_decode_stateid(argp, &close->cl_stateid); + return nfsd4_decode_stateid4(argp, &close->cl_stateid); DECODE_TAIL; } @@ -627,7 +628,7 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create static inline __be32 nfsd4_decode_delegreturn(struct nfsd4_compoundargs *argp, struct nfsd4_delegreturn *dr) { - return nfsd4_decode_stateid(argp, &dr->dr_stateid); + return nfsd4_decode_stateid4(argp, &dr->dr_stateid); } static inline __be32 @@ -671,7 +672,7 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) if (lock->lk_is_new) { READ_BUF(4); lock->lk_new_open_seqid = be32_to_cpup(p++); - status = nfsd4_decode_stateid(argp, &lock->lk_new_open_stateid); + status = nfsd4_decode_stateid4(argp, &lock->lk_new_open_stateid); if (status) return status; READ_BUF(8 + sizeof(clientid_t)); @@ -681,7 +682,7 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) READ_BUF(lock->lk_new_owner.len); READMEM(lock->lk_new_owner.data, lock->lk_new_owner.len); } else { - status = nfsd4_decode_stateid(argp, &lock->lk_old_lock_stateid); + status = nfsd4_decode_stateid4(argp, &lock->lk_old_lock_stateid); if (status) return status; READ_BUF(4); @@ -720,7 +721,7 @@ nfsd4_decode_locku(struct nfsd4_compoundargs *argp, struct nfsd4_locku *locku) if ((locku->lu_type < NFS4_READ_LT) || (locku->lu_type > NFS4_WRITEW_LT)) goto xdr_error; locku->lu_seqid = be32_to_cpup(p++); - status = nfsd4_decode_stateid(argp, &locku->lu_stateid); + status = nfsd4_decode_stateid4(argp, &locku->lu_stateid); if (status) return status; READ_BUF(16); @@ -913,7 +914,7 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) open->op_delegate_type = be32_to_cpup(p++); break; case NFS4_OPEN_CLAIM_DELEGATE_CUR: - status = nfsd4_decode_stateid(argp, &open->op_delegate_stateid); + status = nfsd4_decode_stateid4(argp, &open->op_delegate_stateid); if (status) return status; READ_BUF(4); @@ -932,7 +933,7 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) case NFS4_OPEN_CLAIM_DELEG_CUR_FH: if (argp->minorversion < 1) goto xdr_error; - status = nfsd4_decode_stateid(argp, &open->op_delegate_stateid); + status = nfsd4_decode_stateid4(argp, &open->op_delegate_stateid); if (status) return status; break; @@ -951,7 +952,7 @@ nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_con if (argp->minorversion >= 1) return nfserr_notsupp; - status = nfsd4_decode_stateid(argp, &open_conf->oc_req_stateid); + status = nfsd4_decode_stateid4(argp, &open_conf->oc_req_stateid); if (status) return status; READ_BUF(4); @@ -965,7 +966,7 @@ nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_d { DECODE_HEAD; - status = nfsd4_decode_stateid(argp, &open_down->od_stateid); + status = nfsd4_decode_stateid4(argp, &open_down->od_stateid); if (status) return status; READ_BUF(4); @@ -1008,7 +1009,7 @@ nfsd4_decode_read(struct nfsd4_compoundargs *argp, struct nfsd4_read *read) { DECODE_HEAD; - status = nfsd4_decode_stateid(argp, &read->rd_stateid); + status = nfsd4_decode_stateid4(argp, &read->rd_stateid); if (status) return status; READ_BUF(12); @@ -1116,7 +1117,7 @@ nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *seta { __be32 status; - status = nfsd4_decode_stateid(argp, &setattr->sa_stateid); + status = nfsd4_decode_stateid4(argp, &setattr->sa_stateid); if (status) return status; return nfsd4_decode_fattr(argp, setattr->sa_bmval, &setattr->sa_iattr, @@ -1193,7 +1194,7 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) { DECODE_HEAD; - status = nfsd4_decode_stateid(argp, &write->wr_stateid); + status = nfsd4_decode_stateid4(argp, &write->wr_stateid); if (status) return status; READ_BUF(16); @@ -1438,7 +1439,7 @@ nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_sta INIT_LIST_HEAD(&stateid->ts_id_list); list_add_tail(&stateid->ts_id_list, &test_stateid->ts_stateid_list); - status = nfsd4_decode_stateid(argp, &stateid->ts_id_stateid); + status = nfsd4_decode_stateid4(argp, &stateid->ts_id_stateid); if (status) goto out; } @@ -1514,7 +1515,7 @@ nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, p = xdr_decode_hyper(p, &lgp->lg_seg.length); p = xdr_decode_hyper(p, &lgp->lg_minlength); - status = nfsd4_decode_stateid(argp, &lgp->lg_sid); + status = nfsd4_decode_stateid4(argp, &lgp->lg_sid); if (status) return status; @@ -1536,7 +1537,7 @@ nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, p = xdr_decode_hyper(p, &lcp->lc_seg.length); lcp->lc_reclaim = be32_to_cpup(p++); - status = nfsd4_decode_stateid(argp, &lcp->lc_sid); + status = nfsd4_decode_stateid4(argp, &lcp->lc_sid); if (status) return status; @@ -1588,7 +1589,7 @@ nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, p = xdr_decode_hyper(p, &lrp->lr_seg.offset); p = xdr_decode_hyper(p, &lrp->lr_seg.length); - status = nfsd4_decode_stateid(argp, &lrp->lr_sid); + status = nfsd4_decode_stateid4(argp, &lrp->lr_sid); if (status) return status; @@ -1613,7 +1614,7 @@ nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, { DECODE_HEAD; - status = nfsd4_decode_stateid(argp, &fallocate->falloc_stateid); + status = nfsd4_decode_stateid4(argp, &fallocate->falloc_stateid); if (status) return status; @@ -1629,10 +1630,10 @@ nfsd4_decode_clone(struct nfsd4_compoundargs *argp, struct nfsd4_clone *clone) { DECODE_HEAD; - status = nfsd4_decode_stateid(argp, &clone->cl_src_stateid); + status = nfsd4_decode_stateid4(argp, &clone->cl_src_stateid); if (status) return status; - status = nfsd4_decode_stateid(argp, &clone->cl_dst_stateid); + status = nfsd4_decode_stateid4(argp, &clone->cl_dst_stateid); if (status) return status; @@ -1685,10 +1686,10 @@ nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) struct nl4_server *ns_dummy; int i, count; - status = nfsd4_decode_stateid(argp, ©->cp_src_stateid); + status = nfsd4_decode_stateid4(argp, ©->cp_src_stateid); if (status) return status; - status = nfsd4_decode_stateid(argp, ©->cp_dst_stateid); + status = nfsd4_decode_stateid4(argp, ©->cp_dst_stateid); if (status) return status; @@ -1732,7 +1733,7 @@ static __be32 nfsd4_decode_offload_status(struct nfsd4_compoundargs *argp, struct nfsd4_offload_status *os) { - return nfsd4_decode_stateid(argp, &os->stateid); + return nfsd4_decode_stateid4(argp, &os->stateid); } static __be32 @@ -1741,7 +1742,7 @@ nfsd4_decode_copy_notify(struct nfsd4_compoundargs *argp, { __be32 status; - status = nfsd4_decode_stateid(argp, &cn->cpn_src_stateid); + status = nfsd4_decode_stateid4(argp, &cn->cpn_src_stateid); if (status) return status; return nfsd4_decode_nl4_server(argp, &cn->cpn_dst); @@ -1752,7 +1753,7 @@ nfsd4_decode_seek(struct nfsd4_compoundargs *argp, struct nfsd4_seek *seek) { DECODE_HEAD; - status = nfsd4_decode_stateid(argp, &seek->seek_stateid); + status = nfsd4_decode_stateid4(argp, &seek->seek_stateid); if (status) return status; From patchwork Fri Nov 20 20:34:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922245 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0BA75C64E75 for ; Fri, 20 Nov 2020 20:34:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A473A2408E for ; Fri, 20 Nov 2020 20:34:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mBSwpAzw" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731207AbgKTUec (ORCPT ); Fri, 20 Nov 2020 15:34:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60704 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731075AbgKTUeb (ORCPT ); Fri, 20 Nov 2020 15:34:31 -0500 Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FE9FC0613CF for ; Fri, 20 Nov 2020 12:34:31 -0800 (PST) Received: by mail-qv1-xf41.google.com with SMTP id g19so5329712qvy.2 for ; Fri, 20 Nov 2020 12:34:31 -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=ZHKC7O7bKMdtBlGOzhOf6cKLSnD5Yst/iMkIzzR6Sak=; b=mBSwpAzw3O+Od/FWcf5WrbOyrNFaXpjSocIOGk//7Ax5vQKQG/6NEekEvHvJrZN5Q1 1Q2zgTNLgz4XizDM5xx13jCn8o34MoULdIlc/ezWyRnWvMSYlMCFWRr6ZRq+PVq0Enfv cDpgJK1T5cUgeIXXQezFr0ZRW2MEhZWUrcM6XhEGST6J0vnHzvME+jwL/XNSx2UtDi6J 3Snm7pbBsKxjBEKhDa3F2wR4q7qfSUyEa7EwiB/RUI/wHn0vSR26BaFEjJ3YrUEYZBJx KVPGvizvNwQyncVwg7H3RRuf6wEno34wfrkHKPVlBa89/8FXCP4/zwU6atQzDZJ8GftN IHBw== 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=ZHKC7O7bKMdtBlGOzhOf6cKLSnD5Yst/iMkIzzR6Sak=; b=sbrvoxsLo1dgTpfPiuhpSQFfcsEwe8p5+AIUuYyN8/PuLpOKIIStOeGCqdPE7EsVAr 34FAUJCsGS3dx023EygV4ZlTqrb/dlNPsXU/vy4T9+f9vaF3GVqRV2wp+iC3UZ2yzibY paPkYWLM3OiDYY6No5qKJBC1f/N8MGOnmmLyLIRaNvOxfs1FSY7w0uWRCeWqgYf1418y Y44/+3HQHXpewjmqbgPDyyUXkTcLjd2aaes1Km92IVAW2NgWRmL3xuNQ+y7yaKxjb4Mv V1vv7yQVUFlaQf0cvVehJvHuop8eWnFd6BdDjFa6L3RjNNTDijIdB6g5Jv2dGaCjJFL3 xfpg== X-Gm-Message-State: AOAM530K7upYE7q1ATAVBKpI2HzOqmjSFaLAqbvAUKTFOtPKcfGK5V9Z kZFDbehpl/buEkrqWS/sPCqiyyeKYfw= X-Google-Smtp-Source: ABdhPJwJhi6n6O8stYO3ve8TtL5nD2rly1IGQq+kBEKzMXqeU9QstRc16bIWZQNbBo/KqY8JT0h9Mw== X-Received: by 2002:a0c:c38f:: with SMTP id o15mr16065793qvi.12.1605904470218; Fri, 20 Nov 2020 12:34:30 -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 c1sm2774646qkd.74.2020.11.20.12.34.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:29 -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 0AKKYSxW029226 for ; Fri, 20 Nov 2020 20:34:28 GMT Subject: [PATCH v2 008/118] NFSD: Replace READ* macros in nfsd4_decode_close() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:28 -0500 Message-ID: <160590446846.1340.9664040070243046724.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 027582d682ae..06028e4f1b5d 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -558,13 +558,9 @@ static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close) { - DECODE_HEAD; - - READ_BUF(4); - close->cl_seqid = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &close->cl_seqid) < 0) + return nfserr_bad_xdr; return nfsd4_decode_stateid4(argp, &close->cl_stateid); - - DECODE_TAIL; } From patchwork Fri Nov 20 20:34:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922247 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94A7AC63777 for ; Fri, 20 Nov 2020 20:35:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3D7AA221EB for ; Fri, 20 Nov 2020 20:35:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cguG11VD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728844AbgKTUei (ORCPT ); Fri, 20 Nov 2020 15:34:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728727AbgKTUei (ORCPT ); Fri, 20 Nov 2020 15:34:38 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80468C0613CF for ; Fri, 20 Nov 2020 12:34:36 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id k4so10158718qko.13 for ; Fri, 20 Nov 2020 12:34:36 -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=0WdT8NesIVghmR04DBd7FdxBy0Ejv1mbV+HUQlkIjhI=; b=cguG11VDRwvoYkysxEJyNgn95fhTAg8cbAbqNKQGZQEkUUC1DRzGnFO2/0JWB44xHd LYZz07lecHTnv2iU2sMAYH9jXVaHUEU+u3IP3B8CWyDZqdikp+e9pglUqFyodMlcpqE/ 54GefFMxZRug5d6XiZZsY0Ydi9nkb+A5TnaCl0JgSvmb8o8xh5vlbuwsjnwzUC+KOI6T s1J5npJYfNquA/4pXZemoSDye9mamIX4dOKAygnGof7jm36LsHvQIUZlzFt333uJMzd2 SiUtgAcjOEVG017CiuTlLwkBnOQSRYkig9EUoc01wVr+8GouH7VUvsQxR/x6mfzcSHS7 +pnw== 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=0WdT8NesIVghmR04DBd7FdxBy0Ejv1mbV+HUQlkIjhI=; b=LXfALOMo4bXO6Wm3x0YfRbRSNtvQG0Teii6kCfVmilDrx4nXmWZmDZf0jZ49Fj0TS2 38LMdh+m6moyzwJCmtc5hAD17uXT46GFQ5DxkEaFizn1wjHzc08qvpu0AN+6UFQeIzPE eblsaEk+MZ6fIWbPNu0u/D5OArC/egpBoi2TjfKqPPvk7C41C8j1IquTCXKg8zyanZdO fzLY51iRtw6Wu5LwxJnU8wGW2VhV+U2NQcamKGG60cpBkg3zF5avcULefaCeA3bY2mtN pxt7g9KiHG3GoEuiAlpgRE1ixRm4V7uffL1/5T+t8n0GRPF7P4miBKywHHJvAMR5nJZY s/OQ== X-Gm-Message-State: AOAM533rojzEfPO9f3qpO23fdOvU+Wp7IT32BpWRblTygKA2RTuxdz9F 4UOb6x+ATW21Bsx7Ae9igo2hpSGB/WM= X-Google-Smtp-Source: ABdhPJxVFc+3BeRak3m3EefB2Ox9JHoylaiQQ1xafdWnjZf5JFNKp9V7wn3Wv+xtBDfB+ImDRJd8Mg== X-Received: by 2002:ae9:ed81:: with SMTP id c123mr11591753qkg.349.1605904475495; Fri, 20 Nov 2020 12:34:35 -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 d16sm2836389qkc.58.2020.11.20.12.34.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:34 -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 0AKKYXP4029229 for ; Fri, 20 Nov 2020 20:34:33 GMT Subject: [PATCH v2 009/118] NFSD: Replace READ* macros in nfsd4_decode_commit() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:33 -0500 Message-ID: <160590447378.1340.4613012762069336535.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 12 +++++------- include/linux/sunrpc/xdr.h | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 06028e4f1b5d..d4b98bd8a859 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -567,13 +567,11 @@ nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close) static __be32 nfsd4_decode_commit(struct nfsd4_compoundargs *argp, struct nfsd4_commit *commit) { - DECODE_HEAD; - - READ_BUF(12); - p = xdr_decode_hyper(p, &commit->co_offset); - commit->co_count = be32_to_cpup(p++); - - DECODE_TAIL; + if (xdr_stream_decode_u64(argp->xdr, &commit->co_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &commit->co_count) < 0) + return nfserr_bad_xdr; + return nfs_ok; } static __be32 diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 8f458addfcf0..22b00104bc1a 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -576,6 +576,27 @@ xdr_stream_decode_u32(struct xdr_stream *xdr, __u32 *ptr) return 0; } +/** + * xdr_stream_decode_u64 - Decode a 64-bit integer + * @xdr: pointer to xdr_stream + * @ptr: location to store 64-bit integer + * + * Return values: + * %0 on success + * %-EBADMSG on XDR buffer overflow + */ +static inline ssize_t +xdr_stream_decode_u64(struct xdr_stream *xdr, __u64 *ptr) +{ + const size_t count = sizeof(*ptr); + __be32 *p = xdr_inline_decode(xdr, count); + + if (unlikely(!p)) + return -EBADMSG; + xdr_decode_hyper(p, ptr); + return 0; +} + /** * xdr_stream_decode_opaque_fixed - Decode fixed length opaque xdr data * @xdr: pointer to xdr_stream From patchwork Fri Nov 20 20:34:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922251 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6113C56202 for ; Fri, 20 Nov 2020 20:35:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 77AB02223F for ; Fri, 20 Nov 2020 20:35:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aZAv1+of" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731059AbgKTUem (ORCPT ); Fri, 20 Nov 2020 15:34:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60732 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731044AbgKTUem (ORCPT ); Fri, 20 Nov 2020 15:34:42 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1813BC0613CF for ; Fri, 20 Nov 2020 12:34:42 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id 9so1114354qvk.9 for ; Fri, 20 Nov 2020 12:34:42 -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=gRYU3FM2wrIg300WHn2tfdyIL3e6BWrxRnRdZlzzgnA=; b=aZAv1+ofA5htfp66swZ2Dxi8o2UhD8U1UgBk7XfZ+yylFuxUmffFDrYTYvx+uOslLe ip2SWHecgilQF4kUHebuNFyJrL+SngJPKfBsSq2qI90t+/WuRTRQMTnpK8h15+489gWe 5VsStbznbx3vb1bmEkc9FvaRuj0Jd/CMHpVcMEKNOPpOz5IcyCosva/hqjiWiXspTaaf Ge+lHkZuGuD8sFyJq5GKFPO9pkLuCzsHPhG6TwTXCtzvNZTV41jiLrfT//PsHpTr9LRL 73fBrfw3JZHXtxlCqsGNOuc0W5biHIaRj/ZaGvSnKLhBV01F3/6eCs6ObkRcKCmHSaJV cJsw== 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=gRYU3FM2wrIg300WHn2tfdyIL3e6BWrxRnRdZlzzgnA=; b=rDO6tYnGbP67Tr8xAs8j/UgTQIgU7WhcguFFA75gpnkrq5KIhdX+G5IgKBIHj5v2tC Ud9E1AaMlZ8kd//Gum+KZEG2ev9IYFP9RYrXSrjywbuVDZnDYs/W6Rf9i4SE7kaTHXsz YwL2Jp16N3t5HRp1PInSvn40IXVeccuw8+Q2zYN+1C8IaEne16JZc2a7oBr5iLgq+ZdA fHIfI3PIuWX+lZwBltS3W30NmAunfX6w5URq9INoCYtM8BedlfU4t+4wssV5Iezuz6yD 5RAgpv+fTfSb2M3nVwzrKWdzJ+ZgRJcHVPVsIe15j4zXZoyM79YBH8kUgs3QBTru+uyO kZuw== X-Gm-Message-State: AOAM53032mZkyPnoEbSUdJviknZ9l1VHgvJzpO/EpvZ+ZGsbqpCMoycw bThgAb6U+1VgKQgJAyHParWjeO8s/48= X-Google-Smtp-Source: ABdhPJxfaX27c987Y2YSamlDQrptkwzWunQvH5cBXj509gJYmYT9ctxQ/q627CrJqflA/DT0Npy9hg== X-Received: by 2002:ad4:4051:: with SMTP id r17mr13822942qvp.39.1605904480953; Fri, 20 Nov 2020 12:34:40 -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 9sm2516281qty.30.2020.11.20.12.34.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:40 -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 0AKKYdvm029232 for ; Fri, 20 Nov 2020 20:34:39 GMT Subject: [PATCH v2 010/118] NFSD: Change the way the expected length of a fattr4 is checked From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:39 -0500 Message-ID: <160590447910.1340.2131975329375069529.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Because the fattr4 is now managed in an xdr_stream, all that is needed is to store the initial position of the stream before decoding the attribute list. Then the actual length of the list is computed using the final stream position, after decoding is complete. No behavior change is expected. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 34 +++++++++++----------------------- 1 file changed, 11 insertions(+), 23 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index d4b98bd8a859..a076bb42e98a 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -248,7 +248,8 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, struct iattr *iattr, struct nfs4_acl **acl, struct xdr_netobj *label, int *umask) { - int expected_len, len = 0; + unsigned int starting_pos; + u32 attrlist4_count; u32 dummy32; char *buf; @@ -265,12 +266,12 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, return nfserr_attrnotsupp; } - READ_BUF(4); - expected_len = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &attrlist4_count) < 0) + return nfserr_bad_xdr; + starting_pos = xdr_stream_pos(argp->xdr); if (bmval[0] & FATTR4_WORD0_SIZE) { READ_BUF(8); - len += 8; p = xdr_decode_hyper(p, &iattr->ia_size); iattr->ia_valid |= ATTR_SIZE; } @@ -278,7 +279,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, u32 nace; struct nfs4_ace *ace; - READ_BUF(4); len += 4; + READ_BUF(4); nace = be32_to_cpup(p++); if (nace > xdr_stream_remaining(argp->xdr) / sizeof(struct nfs4_ace)) @@ -295,13 +296,12 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, (*acl)->naces = nace; for (ace = (*acl)->aces; ace < (*acl)->aces + nace; ace++) { - READ_BUF(16); len += 16; + READ_BUF(16); ace->type = be32_to_cpup(p++); ace->flag = be32_to_cpup(p++); ace->access_mask = be32_to_cpup(p++); dummy32 = be32_to_cpup(p++); READ_BUF(dummy32); - len += XDR_QUADLEN(dummy32) << 2; READMEM(buf, dummy32); ace->whotype = nfs4_acl_get_whotype(buf, dummy32); status = nfs_ok; @@ -320,17 +320,14 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, *acl = NULL; if (bmval[1] & FATTR4_WORD1_MODE) { READ_BUF(4); - len += 4; iattr->ia_mode = be32_to_cpup(p++); iattr->ia_mode &= (S_IFMT | S_IALLUGO); iattr->ia_valid |= ATTR_MODE; } if (bmval[1] & FATTR4_WORD1_OWNER) { READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); READ_BUF(dummy32); - len += (XDR_QUADLEN(dummy32) << 2); READMEM(buf, dummy32); if ((status = nfsd_map_name_to_uid(argp->rqstp, buf, dummy32, &iattr->ia_uid))) return status; @@ -338,10 +335,8 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, } if (bmval[1] & FATTR4_WORD1_OWNER_GROUP) { READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); READ_BUF(dummy32); - len += (XDR_QUADLEN(dummy32) << 2); READMEM(buf, dummy32); if ((status = nfsd_map_name_to_gid(argp->rqstp, buf, dummy32, &iattr->ia_gid))) return status; @@ -349,11 +344,9 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, } if (bmval[1] & FATTR4_WORD1_TIME_ACCESS_SET) { READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); switch (dummy32) { case NFS4_SET_TO_CLIENT_TIME: - len += 12; status = nfsd4_decode_time(argp, &iattr->ia_atime); if (status) return status; @@ -368,11 +361,9 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, } if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) { READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); switch (dummy32) { case NFS4_SET_TO_CLIENT_TIME: - len += 12; status = nfsd4_decode_time(argp, &iattr->ia_mtime); if (status) return status; @@ -390,18 +381,14 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (IS_ENABLED(CONFIG_NFSD_V4_SECURITY_LABEL) && bmval[2] & FATTR4_WORD2_SECURITY_LABEL) { READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); /* lfs: we don't use it */ READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); /* pi: we don't use it either */ READ_BUF(4); - len += 4; dummy32 = be32_to_cpup(p++); READ_BUF(dummy32); if (dummy32 > NFS4_MAXLABELLEN) return nfserr_badlabel; - len += (XDR_QUADLEN(dummy32) << 2); READMEM(buf, dummy32); label->len = dummy32; label->data = svcxdr_dupstr(argp, buf, dummy32); @@ -412,15 +399,16 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (!umask) goto xdr_error; READ_BUF(8); - len += 8; dummy32 = be32_to_cpup(p++); iattr->ia_mode = dummy32 & (S_IFMT | S_IALLUGO); dummy32 = be32_to_cpup(p++); *umask = dummy32 & S_IRWXUGO; iattr->ia_valid |= ATTR_MODE; } - if (len != expected_len) - goto xdr_error; + + /* request sanity: did we get the right number of words? */ + if (attrlist4_count != xdr_stream_pos(argp->xdr) - starting_pos) + return nfserr_bad_xdr; DECODE_TAIL; } From patchwork Fri Nov 20 20:34:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922249 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0ABE4C63798 for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AF807221EB for ; Fri, 20 Nov 2020 20:35:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Lqatmphd" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731118AbgKTUes (ORCPT ); Fri, 20 Nov 2020 15:34:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60750 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731034AbgKTUer (ORCPT ); Fri, 20 Nov 2020 15:34:47 -0500 Received: from mail-qv1-xf42.google.com (mail-qv1-xf42.google.com [IPv6:2607:f8b0:4864:20::f42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B2A7C0613CF for ; Fri, 20 Nov 2020 12:34:47 -0800 (PST) Received: by mail-qv1-xf42.google.com with SMTP id g19so5330111qvy.2 for ; Fri, 20 Nov 2020 12:34:47 -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=ns4r4yy8hXlJcaQU15al8G28x4aiuNo5XhIglFPo0t8=; b=Lqatmphda7p9ciP+D38O2HkFEEbpbvbbTWvFvkxchtfT4nkcnXT65JWobxMeJFTU/s k9Hic0I7cJwgOtdx5ciaEV4NiIzAovmBUnPkgnGmpAdJGIXqxsJ0A7P5NKjcXa7LFVUa C2Pw/W1nf+HwIXvzmBQRMlkd1TfpO7Ivm9GAyztL897PqaVWZqUHzJHpun+Y6TzB/hsd YeTrSeLYUJ+kelQY8nlPl9NOWUvVaPhNqE5WrbFI7xhZrwR9elVFsch4jlfGdAPFvdm4 y5kZZrYz5ksnO02oSjyTKO3qsL5ccBdxoKR4JCwTFxM6NVx6vs5pg/jSa48TUXUs3APR Xeyw== 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=ns4r4yy8hXlJcaQU15al8G28x4aiuNo5XhIglFPo0t8=; b=HHyrgZktDN6jpu1JYjDH/bWf3hxGJEY0IwYbgSXCvdSeszLbbfqxhSsgV7djoSIWl9 ebpJbNTWzffAYKoUwS52b5isXW9hCE5qoINACLZZLk29HiLy5XC+mhbB/n2Q6TJdLGiG AwjHqZmLbCHB/O48hJJPkbDgdDdX1/S2IGs3pnoDtoxdAn28J5IcmnsWJ4APig4EeoPg 6i4TTmkwOXHSyzT4X33r/F/fg1875MEsB3qvfJM2C8IcOevPQFCu0ohHCDZoS5/D3AE1 Q9BTAresq/PLFfvACDGJTj+epwBLfHNx/Ye0nJzoCceC8ZN95OynCXbEus3NGwyW1+83 uL7w== X-Gm-Message-State: AOAM530kYEtjFTaBSodRyeSYp1rZr86JKBUflIuI9LxRgcTFmvvktv1o qhu/bOUX0kTF4x/uGYYh9gMwKECjlME= X-Google-Smtp-Source: ABdhPJxM8ywVa4v87uLcWDxIwzoIgnSicPhEi6lDiwNRH760K+xgjXqAy14zcc8+93Mj7DpEeQEzCA== X-Received: by 2002:a0c:f651:: with SMTP id s17mr18484352qvm.32.1605904486410; Fri, 20 Nov 2020 12:34:46 -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 l46sm2926591qta.44.2020.11.20.12.34.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:45 -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 0AKKYiLJ029235 for ; Fri, 20 Nov 2020 20:34:44 GMT Subject: [PATCH v2 011/118] NFSD: Replace READ* macros that decode the fattr4 size attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:44 -0500 Message-ID: <160590448442.1340.1862136126790405957.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a076bb42e98a..9f121698aa92 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -271,8 +271,11 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, starting_pos = xdr_stream_pos(argp->xdr); if (bmval[0] & FATTR4_WORD0_SIZE) { - READ_BUF(8); - p = xdr_decode_hyper(p, &iattr->ia_size); + u64 size; + + if (xdr_stream_decode_u64(argp->xdr, &size) < 0) + return nfserr_bad_xdr; + iattr->ia_size = size; iattr->ia_valid |= ATTR_SIZE; } if (bmval[0] & FATTR4_WORD0_ACL) { From patchwork Fri Nov 20 20:34:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922253 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FA19C6379D for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E6DE12223F for ; Fri, 20 Nov 2020 20:35:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UbLk+juP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729793AbgKTUex (ORCPT ); Fri, 20 Nov 2020 15:34:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731034AbgKTUew (ORCPT ); Fri, 20 Nov 2020 15:34:52 -0500 Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96515C0613CF for ; Fri, 20 Nov 2020 12:34:52 -0800 (PST) Received: by mail-qv1-xf41.google.com with SMTP id ek7so5316190qvb.6 for ; Fri, 20 Nov 2020 12:34:52 -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=bX2hgvPHjRKIZo3eq4e8Pc6e1gIOZIzj2v89v/ca7hw=; b=UbLk+juP/pOyhJLJ+uMH1WjKj2fxewiP0BlWBOHdY/OTbJDv1DtMR1wRVDvxz5NBZk DNKf0OIzPTG5IHq6W3yIzZiLN3Bcm5656t27oabGB4D59GUdmjCoviPARtxKCdCTQTgq CyedSaicegd1MVzXxP4CYX1AKzIgD/lMJw8B/YLHMO6Y+urwR+oOTRJXV3h/d3NQgo0t CN9UHl5PThKDAuJPQt/uq9EcOspEBLguSadlmNNrq5cLWdYU/DjpWlXMvtAquI7E4Byj M/oJS36Edwuk+lPpJCdWTBJOW/RwC1b8/JPGnVyHDjp0MXbaK+iElM2XaWPVnhm9OBgy Y6uA== 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=bX2hgvPHjRKIZo3eq4e8Pc6e1gIOZIzj2v89v/ca7hw=; b=nBLFiLE4vTdcWnlu4jspn2eL7T8dDhP7G2krMYL22cWj/2v/pYDatGtpJ/1R2H7i1P QWGjVqXIABuWcHp6+xjUvU9kk9fy2D1SO1VUZNE2G8BdmzJPFFjjwRz94hPwB+aWR/pd i/dMDGmun2eoz5Ab8dZCf1xU0bfBbhctgsK/w36eLwywgUf7crFk616yJV7x34BapSW2 32NMLu0BNMwQ5Qa/lSqZWKSOZ1rUW4U3syXVC44ABMyfLEWRFhYZBiZoZgZlVMOqACTY uPeO/x2bni1nDWscskrwZ4sTxBRicDyHJ54GWfgtFVf7TR8mywnzSQg7rbxRzTOCT0BN kShg== X-Gm-Message-State: AOAM531GVJcZIjlGZS2uPueZGI1ByWdWPX9/aQkZRJoZHneYXDWOWp60 70uXimXk4WPbMm1U075AbQXBUW54gPg= X-Google-Smtp-Source: ABdhPJwk8H7arb4M3u2s44Y/U4IuTDgmiCKG2iQfi3lwiYcx8fqJTlu/j2rwSowni6hj8GVjWvDMTg== X-Received: by 2002:a0c:aed2:: with SMTP id n18mr18554287qvd.4.1605904491457; Fri, 20 Nov 2020 12:34:51 -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 x5sm2682413qtx.61.2020.11.20.12.34.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:50 -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 0AKKYnQW029238 for ; Fri, 20 Nov 2020 20:34:49 GMT Subject: [PATCH v2 012/118] NFSD: Replace READ* macros that decode the fattr4 acl attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:49 -0500 Message-ID: <160590448974.1340.11466087667900075196.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity and to move infrequently-used code out of line. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 107 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 40 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 9f121698aa92..54c553ef35bf 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -243,6 +243,70 @@ nfsd4_decode_bitmap(struct nfsd4_compoundargs *argp, u32 *bmval) DECODE_TAIL; } +static __be32 +nfsd4_decode_nfsace4(struct nfsd4_compoundargs *argp, struct nfs4_ace *ace) +{ + __be32 *p, status; + u32 length; + + if (xdr_stream_decode_u32(argp->xdr, &ace->type) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &ace->flag) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &ace->access_mask) < 0) + return nfserr_bad_xdr; + + if (xdr_stream_decode_u32(argp->xdr, &length) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, length); + if (!p) + return nfserr_bad_xdr; + ace->whotype = nfs4_acl_get_whotype((char *)p, length); + if (ace->whotype != NFS4_ACL_WHO_NAMED) + status = nfs_ok; + else if (ace->flag & NFS4_ACE_IDENTIFIER_GROUP) + status = nfsd_map_name_to_gid(argp->rqstp, + (char *)p, length, &ace->who_gid); + else + status = nfsd_map_name_to_uid(argp->rqstp, + (char *)p, length, &ace->who_uid); + + return status; +} + +/* A counted array of nfsace4's */ +static noinline __be32 +nfsd4_decode_acl(struct nfsd4_compoundargs *argp, struct nfs4_acl **acl) +{ + struct nfs4_ace *ace; + __be32 status; + u32 count; + + if (xdr_stream_decode_u32(argp->xdr, &count) < 0) + return nfserr_bad_xdr; + + if (count > xdr_stream_remaining(argp->xdr) / sizeof(struct nfs4_ace)) + /* + * Even with 4-byte names there wouldn't be + * space for that many aces; something fishy is + * going on: + */ + return nfserr_fbig; + + *acl = svcxdr_tmpalloc(argp, nfs4_acl_bytes(count)); + if (*acl == NULL) + return nfserr_jukebox; + + (*acl)->naces = count; + for (ace = (*acl)->aces; ace < (*acl)->aces + count; ace++) { + status = nfsd4_decode_nfsace4(argp, ace); + if (status) + return status; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, struct iattr *iattr, struct nfs4_acl **acl, @@ -279,46 +343,9 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, iattr->ia_valid |= ATTR_SIZE; } if (bmval[0] & FATTR4_WORD0_ACL) { - u32 nace; - struct nfs4_ace *ace; - - READ_BUF(4); - nace = be32_to_cpup(p++); - - if (nace > xdr_stream_remaining(argp->xdr) / sizeof(struct nfs4_ace)) - /* - * Even with 4-byte names there wouldn't be - * space for that many aces; something fishy is - * going on: - */ - return nfserr_fbig; - - *acl = svcxdr_tmpalloc(argp, nfs4_acl_bytes(nace)); - if (*acl == NULL) - return nfserr_jukebox; - - (*acl)->naces = nace; - for (ace = (*acl)->aces; ace < (*acl)->aces + nace; ace++) { - READ_BUF(16); - ace->type = be32_to_cpup(p++); - ace->flag = be32_to_cpup(p++); - ace->access_mask = be32_to_cpup(p++); - dummy32 = be32_to_cpup(p++); - READ_BUF(dummy32); - READMEM(buf, dummy32); - ace->whotype = nfs4_acl_get_whotype(buf, dummy32); - status = nfs_ok; - if (ace->whotype != NFS4_ACL_WHO_NAMED) - ; - else if (ace->flag & NFS4_ACE_IDENTIFIER_GROUP) - status = nfsd_map_name_to_gid(argp->rqstp, - buf, dummy32, &ace->who_gid); - else - status = nfsd_map_name_to_uid(argp->rqstp, - buf, dummy32, &ace->who_uid); - if (status) - return status; - } + status = nfsd4_decode_acl(argp, acl); + if (status) + return status; } else *acl = NULL; if (bmval[1] & FATTR4_WORD1_MODE) { From patchwork Fri Nov 20 20:34:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922257 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88D2AC6379F for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2AF55221EB for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pZhtK0wD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731093AbgKTUe7 (ORCPT ); Fri, 20 Nov 2020 15:34:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731092AbgKTUe6 (ORCPT ); Fri, 20 Nov 2020 15:34:58 -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 7D3C3C0613CF for ; Fri, 20 Nov 2020 12:34:58 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id v143so10216577qkb.2 for ; Fri, 20 Nov 2020 12:34:58 -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=/lnYU4VjGcsj8jSDBqS0kAjeaM7UWGLQgHgYqESNJcQ=; b=pZhtK0wD7q4StSQLLe0yRu6nIbaDwEOE3Q6UukaPmoxS4Q9NfAOvsT02b0pwk2HMaD Dw6Wbx2sF/RvYFzN7Xf3wj8uFjna2eReCYChLFnZmn/F9OV3FyPblejyF3eGEUi8Z7EE FtNN1PsizbuH+wAXkdRZFSwDZ2jUMWFneKb/9xroKFcP22UmE3uPXlPZqXijV2S5kyOy K07gICML4xHbZiD+W5o+aEuw4fXp/4iQgs/Bb27sikYSTCFn1WvuvsAYkfX+ncjJ7+i2 vOIpY2oy4yCqTA0zQFSdQ3BH+1k9cnuZQmo13nI3VC5WsRf+B1zyRIo4vXwBQ5Dn545n ACOQ== 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=/lnYU4VjGcsj8jSDBqS0kAjeaM7UWGLQgHgYqESNJcQ=; b=ftznLV0fQ/kEkOdewBNHf/sDIP2G/cblxGqprjYKXe8WF24L/t23K8KqLC4cfmw/2w aoMXS9zQSXzoeCYSTn/zM7CFSCaWJMpnkSBpPe2BPiwvqsEYpdGT+lQ8+mEb7/UC3Yo3 jkrshkYIwpZP9xZwcGnn6YA0+XdPPz258+Zhn6CWiEo3N9kh9HwLTpP0lJKvpNrXifLg ezIuVY52HsAzb1e1VxF2BguRR0xnm8Ze694oCr2Y24M1NUAsPAsyeD5eY2yxaaw5ELly r4N1PMs1SGc1jwpLc2VLoMrKV2aJ7TOtzQS42tHkv4AjjGeXqs6jbRB+JG3m8FzV3gBp n7kQ== X-Gm-Message-State: AOAM532kvJqz+ouIThkZ9JvhRESBtmtVvBxR97A4LAt2UJgiFvak8eMX cyrOpxnGkFcafOqnq3V5q/mIqPxTBeg= X-Google-Smtp-Source: ABdhPJzV+GJq40n6D2qMY/LpuQ/Gn2upBjN4TjOqYKws00nsGE5/tj0HgTi6BG5EXFrmen6siDqcAQ== X-Received: by 2002:a37:6748:: with SMTP id b69mr17594049qkc.336.1605904497474; Fri, 20 Nov 2020 12:34:57 -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 j13sm3084296qtc.81.2020.11.20.12.34.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:34:56 -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 0AKKYtvr029241 for ; Fri, 20 Nov 2020 20:34:55 GMT Subject: [PATCH v2 013/118] NFSD: Replace READ* macros that decode the fattr4 mode attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:34:55 -0500 Message-ID: <160590449506.1340.15554962777228664236.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 54c553ef35bf..821a03121d22 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -349,8 +349,11 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, } else *acl = NULL; if (bmval[1] & FATTR4_WORD1_MODE) { - READ_BUF(4); - iattr->ia_mode = be32_to_cpup(p++); + u32 mode; + + if (xdr_stream_decode_u32(argp->xdr, &mode) < 0) + return nfserr_bad_xdr; + iattr->ia_mode = mode; iattr->ia_mode &= (S_IFMT | S_IALLUGO); iattr->ia_valid |= ATTR_MODE; } From patchwork Fri Nov 20 20:35:00 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922255 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA5ACC64E69 for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 650662223F for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZnP/5fH2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731126AbgKTUfD (ORCPT ); Fri, 20 Nov 2020 15:35:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60796 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730995AbgKTUfD (ORCPT ); Fri, 20 Nov 2020 15:35:03 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FB73C0613CF for ; Fri, 20 Nov 2020 12:35:03 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id n132so10238034qke.1 for ; Fri, 20 Nov 2020 12:35:03 -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=NDvCnlUBKTH8BONeWvYh6YYL70z+xBpgUT1AqFmxRuc=; b=ZnP/5fH2nB7DP9D01quGAQ6LaErHNzTMLZ8oLfxkUtJfj2PCXY+CU1W7uvpSoT/a4I nLsFHr6ZXx3/vjlLM5/BFd/V+DCqsLv2+T3tTsc3HBUqEUuDzO4JYqTVYh/V5e7Vvme7 2KGA5NCMBqd5P/e+ZNI4TO8tZE0zq4YDyXbsszJRHnLCtVmvZtRqYKTJAPYHJjhmi/wY ZsgEo7F73QTDdkgj+jTUguMVQJZzgsc03jpS1uYx4EO+b0Dj9YZPkaGqEm9CPU9ch5kG FHgc8+N+1naUdHY5EhFeX9jPAdDbQ3MPpgo5Em75Pl8Ndl/dmqxArHiSMXwobOt0pJA0 qPLQ== 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=NDvCnlUBKTH8BONeWvYh6YYL70z+xBpgUT1AqFmxRuc=; b=mIhvF/EsWdiOLssfLfqpnnihVoASqa7M5AINZuAjvf7Nz4OPI2o/OCPrJhE2v5KGh3 JQLKLUWpw+4Mv+lImeN2cXlUbWv3HAwHZTOItM3LGGrfQLmbImCfFRsIeOMZAhV2FQGS hh6msjFV1FrDZ8MbZk+OyqYbzTKm4UuRAsUGDZat2ud5qyd9+zI14QpfrjDzXgCxn4RG 466vUjszTf80/S1omytHPsQj4Tp1xK4edSMRUYKEQjqeabg5tFSQTLNptsMFJyIpk2A7 2rJUug7ScLGEc52lme572BG1fbczxNicj9d4UgU4Y5EpKcyplccdJockPTlbzWkyMHC4 oIDw== X-Gm-Message-State: AOAM532qs1XQD7ZR2hLB6jngjpENrJtTgZfT3oPZy2MPwv6nQAisZS2S f/hC8e2FYLfjDqU6JQ8OQKVMH5u353U= X-Google-Smtp-Source: ABdhPJzS5QmYqoPfTv6uUWMozrKZO3qvwI6WlsS8huBUtrHLeSwoXN63Cqj9dyPMz9wnt+Fb5XvoKA== X-Received: by 2002:a37:6554:: with SMTP id z81mr17887423qkb.423.1605904502150; Fri, 20 Nov 2020 12:35:02 -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 w30sm2818683qkw.24.2020.11.20.12.35.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:01 -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 0AKKZ0hU029244 for ; Fri, 20 Nov 2020 20:35:00 GMT Subject: [PATCH v2 014/118] NFSD: Replace READ* macros that decode the fattr4 owner attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:00 -0500 Message-ID: <160590450038.1340.17798254082792701410.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 821a03121d22..7e9c1112cfea 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -358,11 +358,16 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, iattr->ia_valid |= ATTR_MODE; } if (bmval[1] & FATTR4_WORD1_OWNER) { - READ_BUF(4); - dummy32 = be32_to_cpup(p++); - READ_BUF(dummy32); - READMEM(buf, dummy32); - if ((status = nfsd_map_name_to_uid(argp->rqstp, buf, dummy32, &iattr->ia_uid))) + u32 length; + + if (xdr_stream_decode_u32(argp->xdr, &length) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, length); + if (!p) + return nfserr_bad_xdr; + status = nfsd_map_name_to_uid(argp->rqstp, (char *)p, length, + &iattr->ia_uid); + if (status) return status; iattr->ia_valid |= ATTR_UID; } From patchwork Fri Nov 20 20:35:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922259 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DE350C64E7A for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9D99E221EB for ; Fri, 20 Nov 2020 20:35:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="p7Few09o" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728812AbgKTUfJ (ORCPT ); Fri, 20 Nov 2020 15:35:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728360AbgKTUfI (ORCPT ); Fri, 20 Nov 2020 15:35:08 -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 7569FC0613CF for ; Fri, 20 Nov 2020 12:35:08 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id r7so10210151qkf.3 for ; Fri, 20 Nov 2020 12:35:08 -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=qHqdvjtxdc66aVDj1632nYW9ENPmpSnViYBEpu5vhzc=; b=p7Few09oTY3+gwkUWK8nTeMGH1K/4FSiWwbAuYyRl8VZybW6TCJJXlluINODn0GLID qJDopGdjbzgmaxp7qCrivnJkX+eCEPWU3LzfAHzzOL9m72VTReCkS/kDf/k7oYF/3iDc bMA3/ZLdo+F5AbXppG0pnNBT5Gs0PLg0oULz8XRFmb5khAyfZiL6BSHHTpo8y39+fleE eRBEsy+7JHXf4Y8wrowuh9PO6OEhdsOFZzaB4H/A9VTzcGIcP2H4RjJ2qQHDdM9+XNAE guvMEqhQM3n+SpKxb2C3RzVX6HSbdBxsfnojUL6VE3CzFP6jYHKeYXmuWCWBC4HJR9aL 5biw== 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=qHqdvjtxdc66aVDj1632nYW9ENPmpSnViYBEpu5vhzc=; b=sF60d53FOa15zI0Ay/Y6h1zhuGR7BEtlznFgb04nFgvl6do+Tvn3tsK/A6jiiv6HqA xJthlSm+h7rRalzNbdjgNY4HGcl/+MHYBkiFqB5+1JEJonV4A3uw1YMG4/37iE14kSH3 x75IY+TxzhNQRTxiqiqVx5ZST9ucQfP2o/el+EcR+hCPUDFm9rIzK/gPFT6609xlmZ3R pl8EbNr1+eNkiQEaDUqtp3JE7S1mXt714jct7JZcFK8Yx0e7OtWEuIrlGKs0v9gBIQcS xgyPzWmqrcKftkhdDMGYgOlDyfusnLT+083HrVpBiuN98aSvdMftnZOIDfSquw96cuSk 8c+g== X-Gm-Message-State: AOAM532RN5Y17oOuaq+ZKEi/QiK2geeb34O9PhwHzbL/jAHt9USrL2SN v6uMTK1N7yY3k1yM83OCcvicoeGpjVI= X-Google-Smtp-Source: ABdhPJxp/W9JDA1sa1hq710T45RbFuEZIcr5g9ifalGDAVpu/Lf09Akp3aLI//KtNti9/ZP8pYa3Cg== X-Received: by 2002:a37:d16:: with SMTP id 22mr17986511qkn.335.1605904507445; Fri, 20 Nov 2020 12:35:07 -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 x5sm2682962qtx.61.2020.11.20.12.35.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:06 -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 0AKKZ51G029247 for ; Fri, 20 Nov 2020 20:35:05 GMT Subject: [PATCH v2 015/118] NFSD: Replace READ* macros that decode the fattr4 owner_group attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:05 -0500 Message-ID: <160590450574.1340.13284729078070940578.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 7e9c1112cfea..53cd69ff54f7 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -372,11 +372,16 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, iattr->ia_valid |= ATTR_UID; } if (bmval[1] & FATTR4_WORD1_OWNER_GROUP) { - READ_BUF(4); - dummy32 = be32_to_cpup(p++); - READ_BUF(dummy32); - READMEM(buf, dummy32); - if ((status = nfsd_map_name_to_gid(argp->rqstp, buf, dummy32, &iattr->ia_gid))) + u32 length; + + if (xdr_stream_decode_u32(argp->xdr, &length) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, length); + if (!p) + return nfserr_bad_xdr; + status = nfsd_map_name_to_gid(argp->rqstp, (char *)p, length, + &iattr->ia_gid); + if (status) return status; iattr->ia_valid |= ATTR_GID; } From patchwork Fri Nov 20 20:35:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922261 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71663C2D0E4 for ; Fri, 20 Nov 2020 20:35:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1B1BD221EB for ; Fri, 20 Nov 2020 20:35:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MPvtmSLk" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730995AbgKTUfO (ORCPT ); Fri, 20 Nov 2020 15:35:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60826 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730473AbgKTUfO (ORCPT ); Fri, 20 Nov 2020 15:35:14 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0E483C0613CF for ; Fri, 20 Nov 2020 12:35:14 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id f93so8072806qtb.10 for ; Fri, 20 Nov 2020 12:35:14 -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=2D6wigp8z+q3FRMJJM47VSb1/PHwjQaLfBSUtZmYVyA=; b=MPvtmSLkOkx7p/ZGvWBZ8BpmO/yKdaKRbIh4CGrGkoy5g2uiqy3fyeR2jlWTaQvlJl GtJW33KTxWsMyN8NkRZlLRpihtGDEUnUMpJ/XNLJF/0QFQ9Qy4MgxGkM64J+hQV7b+FU Hk1YgjbLsb0SCBoOhu9uULK1wJh1ZSdD3I+gAupKc2+gxjXTiitL4pqwYFSE802tfy4+ +CsGdZdZyGuqDA+IWjOYy3Tj0Ig7t502hWj+RXE/ly1EwIMzroDnX9kQnISZtdisituO HUARosUnuBP9bIEcvB89O+IAZx33NwGP/2TzYb8lFyzAxy2gxYb9VjaMNR5h224G6iE4 ZWhA== 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=2D6wigp8z+q3FRMJJM47VSb1/PHwjQaLfBSUtZmYVyA=; b=NmEkAtqd2OhgwtX4nhlTgrTO5xjwhtNZjhVwbE9dJ7o7eQ7QLRkgwZRk6mFcqT4kIv O9ketgCaw+p/LJrI7UUJGL1T560BgL3zXSYkKdBr894gP5qXQ/vsPJfDUXmBYk2E30Q0 H+17DOJS/WubqUTp1blOuwXhXcylSQe91W57K7WjaeZ2ueVqpahKH2tRDVqo0+dWbDhY 7U3NJi3xAuQteL8yFvnmLvmc9d3mvF6rRpSKTuKe3oOL84xDqtsPiVFJJqcY6E1I1HQw 6rNAxk8IcdCuDXK1cCjemx8WbmiQF+rLO7pZ+A5fHAcmMHLOgaVg8+fOTxCjojoB9i2S P7yA== X-Gm-Message-State: AOAM5302VJuU3SnfnVIv2NMhHRcvyTraeY4GPqwzJoqTAQC6keUZ7GLH 1BP5nA7ntG/y1JjDKoNNClrd4qGwX1A= X-Google-Smtp-Source: ABdhPJzXQWwzb/E2lnZM+ozCGX70JBvKR6my8OTj7dR3HQNH32nHOoQ8xIVkqwZxpGhTOZwKxvvoLw== X-Received: by 2002:ac8:7c9a:: with SMTP id y26mr17562189qtv.287.1605904512874; Fri, 20 Nov 2020 12:35:12 -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 p73sm2809479qka.79.2020.11.20.12.35.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:12 -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 0AKKZBUw029250 for ; Fri, 20 Nov 2020 20:35:11 GMT Subject: [PATCH v2 016/118] NFSD: Replace READ* macros that decode the fattr4 time_set attributes From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:11 -0500 Message-ID: <160590451112.1340.10988510511242299987.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 53cd69ff54f7..16aded9bcf3a 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -217,6 +217,21 @@ nfsd4_decode_time(struct nfsd4_compoundargs *argp, struct timespec64 *tv) DECODE_TAIL; } +static __be32 +nfsd4_decode_nfstime4(struct nfsd4_compoundargs *argp, struct timespec64 *tv) +{ + __be32 *p; + + p = xdr_inline_decode(argp->xdr, XDR_UNIT * 3); + if (!p) + return nfserr_bad_xdr; + p = xdr_decode_hyper(p, &tv->tv_sec); + tv->tv_nsec = be32_to_cpup(p++); + if (tv->tv_nsec >= (u32)1000000000) + return nfserr_inval; + return nfs_ok; +} + static __be32 nfsd4_decode_bitmap(struct nfsd4_compoundargs *argp, u32 *bmval) { @@ -386,11 +401,13 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, iattr->ia_valid |= ATTR_GID; } if (bmval[1] & FATTR4_WORD1_TIME_ACCESS_SET) { - READ_BUF(4); - dummy32 = be32_to_cpup(p++); - switch (dummy32) { + u32 set_it; + + if (xdr_stream_decode_u32(argp->xdr, &set_it) < 0) + return nfserr_bad_xdr; + switch (set_it) { case NFS4_SET_TO_CLIENT_TIME: - status = nfsd4_decode_time(argp, &iattr->ia_atime); + status = nfsd4_decode_nfstime4(argp, &iattr->ia_atime); if (status) return status; iattr->ia_valid |= (ATTR_ATIME | ATTR_ATIME_SET); @@ -399,15 +416,17 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, iattr->ia_valid |= ATTR_ATIME; break; default: - goto xdr_error; + return nfserr_bad_xdr; } } if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) { - READ_BUF(4); - dummy32 = be32_to_cpup(p++); - switch (dummy32) { + u32 set_it; + + if (xdr_stream_decode_u32(argp->xdr, &set_it) < 0) + return nfserr_bad_xdr; + switch (set_it) { case NFS4_SET_TO_CLIENT_TIME: - status = nfsd4_decode_time(argp, &iattr->ia_mtime); + status = nfsd4_decode_nfstime4(argp, &iattr->ia_mtime); if (status) return status; iattr->ia_valid |= (ATTR_MTIME | ATTR_MTIME_SET); @@ -416,7 +435,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, iattr->ia_valid |= ATTR_MTIME; break; default: - goto xdr_error; + return nfserr_bad_xdr; } } From patchwork Fri Nov 20 20:35:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922265 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD574C63777 for ; Fri, 20 Nov 2020 20:35:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7E10A22464 for ; Fri, 20 Nov 2020 20:35:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pZM2DPi7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731384AbgKTUfW (ORCPT ); Fri, 20 Nov 2020 15:35:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60844 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731095AbgKTUfV (ORCPT ); Fri, 20 Nov 2020 15:35:21 -0500 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09752C0613CF for ; Fri, 20 Nov 2020 12:35:20 -0800 (PST) Received: by mail-qt1-x842.google.com with SMTP id g17so8121797qts.5 for ; Fri, 20 Nov 2020 12:35:19 -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=iWet+vPSrNLB7LqDQAsHb+el1qBFpeHaLrIvpWrnbDo=; b=pZM2DPi7oUhzJAjU/X85VrPkYGVsgh5ajplC7um8qVCQ7h9WsPcUT6+r2xi5mKurWP 31ncTuYrRpg9CkIpTdnJUn8h7VcPrIk2Ci22qxyQRGnF15HwUlJ0Mt9pgWLYscbnGHP3 soM3XKmZdJ/AwEywj5P3PG3G0k46QIrqg6njQiDGltNdQi1paaex2/538barCHdiUXQF UKx5Sy53XeHQTAbKKEj7upf+Es/l5QVDSNI3pYO3PsaQSOEofLZMWVvQlpDkg3yDTZ6Z AcZQHzlssdOfKAXSP+ZqAoHqVbhKhW5udctt45qRJgiX4RbCtvBQ+IdmA/qBrBlC+kR+ WK/w== 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=iWet+vPSrNLB7LqDQAsHb+el1qBFpeHaLrIvpWrnbDo=; b=MzlW5M6UvjcxtivGCR8zoQ68IT1rcAo9rGNoWtRrj8TI7llyPIc3Xo+JmxlZbe2/5P TeUYFBHlnbNx3cMEuvfrzsNXh+0RRAY9fl5+DFeC6OUBXIfrhP6+OMsD3J4klJ4f8jA7 xOsP5IThNxJuXEIWqhc1YsY2JpJAajo/JAEatc2UtIjncKk2nxPLRbTnKzmyEJNaWuxG EDLewnEvaB5Pt6Fh4eZdq5L3DCleHAL9vYCeOesUzvxsoiSaImtl0WLi1onOf/xkbBOe 7+28bASV0v9mtfPU1O5FE1nxhAQI0EzE6RyUaGebhQpg60sR+DuVh9hlxsYu2z99WC+T sjGw== X-Gm-Message-State: AOAM533h7M+Ms0wbbledd2JWErnT4KrnYYXjEouiTUKZGw+cTO2ZAdLG 9xfHRHElb/A0iFyvgdGEW2lZcN1tH6c= X-Google-Smtp-Source: ABdhPJyZe4+Wyxva0NgmqpslSq09RayofZebM4QXkRTCg9oB9Gko4H8IqEp6CZmIGx/PvS61LqrRww== X-Received: by 2002:ac8:5351:: with SMTP id d17mr17970332qto.235.1605904518265; Fri, 20 Nov 2020 12:35:18 -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 t126sm2801936qkh.133.2020.11.20.12.35.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:17 -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 0AKKZGX5029253 for ; Fri, 20 Nov 2020 20:35:16 GMT Subject: [PATCH v2 017/118] NFSD: Replace READ* macros that decode the fattr4 security label attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:16 -0500 Message-ID: <160590451655.1340.10481103107579048902.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 16aded9bcf3a..a5207a36199c 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -322,6 +322,33 @@ nfsd4_decode_acl(struct nfsd4_compoundargs *argp, struct nfs4_acl **acl) return nfs_ok; } +static noinline __be32 +nfsd4_decode_seclabel(struct nfsd4_compoundargs *argp, + struct xdr_netobj *label) +{ + u32 lfs, pi, length; + __be32 *p; + + if (xdr_stream_decode_u32(argp->xdr, &lfs) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &pi) < 0) + return nfserr_bad_xdr; + + if (xdr_stream_decode_u32(argp->xdr, &length) < 0) + return nfserr_bad_xdr; + if (length > NFS4_MAXLABELLEN) + return nfserr_badlabel; + p = xdr_inline_decode(argp->xdr, length); + if (!p) + return nfserr_bad_xdr; + label->len = length; + label->data = svcxdr_dupstr(argp, p, length); + if (!label->data) + return nfserr_jukebox; + + return nfs_ok; +} + static __be32 nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, struct iattr *iattr, struct nfs4_acl **acl, @@ -330,7 +357,6 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, unsigned int starting_pos; u32 attrlist4_count; u32 dummy32; - char *buf; DECODE_HEAD; iattr->ia_valid = 0; @@ -438,24 +464,12 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, return nfserr_bad_xdr; } } - label->len = 0; if (IS_ENABLED(CONFIG_NFSD_V4_SECURITY_LABEL) && bmval[2] & FATTR4_WORD2_SECURITY_LABEL) { - READ_BUF(4); - dummy32 = be32_to_cpup(p++); /* lfs: we don't use it */ - READ_BUF(4); - dummy32 = be32_to_cpup(p++); /* pi: we don't use it either */ - READ_BUF(4); - dummy32 = be32_to_cpup(p++); - READ_BUF(dummy32); - if (dummy32 > NFS4_MAXLABELLEN) - return nfserr_badlabel; - READMEM(buf, dummy32); - label->len = dummy32; - label->data = svcxdr_dupstr(argp, buf, dummy32); - if (!label->data) - return nfserr_jukebox; + status = nfsd4_decode_seclabel(argp, label); + if (status) + return status; } if (bmval[2] & FATTR4_WORD2_MODE_UMASK) { if (!umask) From patchwork Fri Nov 20 20:35:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922263 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F41C6C63798 for ; Fri, 20 Nov 2020 20:35:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B357E221EB for ; Fri, 20 Nov 2020 20:35:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pfTudrO+" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731391AbgKTUf0 (ORCPT ); Fri, 20 Nov 2020 15:35:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60860 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731095AbgKTUf0 (ORCPT ); Fri, 20 Nov 2020 15:35:26 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AED5CC0613CF for ; Fri, 20 Nov 2020 12:35:24 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id g17so8121964qts.5 for ; Fri, 20 Nov 2020 12:35:24 -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=w51jTsJ+0/q08obYUG4zM8CWxFvmc80MCCnQwrMkxBg=; b=pfTudrO+rRKMpUr3iGwIBKHITyuDSNubIGP0VuDJimFZGTXirrQz3uLs8ci4GWH1MV RptLYkxCkzIiE795w6IGGlMuDxw699uqaHsJoi9mTNQy+WIhoZwKDgNfERe0ejZVBAz9 DOtI+BqLBy1Wdjdr9iGo5cUilbWyHYaY1sRPKAL8TO0oBV4BsUdPlS2iexS1lDZIhpDr wg2yq8XrjyW+N/XBCFv2Tt1R5o0lE+es4sQvN53oX/IBgd5KUJ2TwGue57FvVAvNruMj 3nkLMLKPvGab5VB0kGxi/HZL4yEIz+GOzOl8OIyetnuUaIIPm/RRDkfElNUcE9tH4fYf oUWw== 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=w51jTsJ+0/q08obYUG4zM8CWxFvmc80MCCnQwrMkxBg=; b=KsN9Hzx8QDRlXrBrIHFHTOd/neaJIvtXdMXH4snGP9a2AcRAXwo+/VIjB0G6NYREz6 lJW0WBnUbuvt/kzLZt0AjFTjjhHOXyGIHAMmxheapMfflnGOEJcwAWiRAknREezqSxC4 mGCG8BdiVkY1fpAVNfScy8BWbP1NtdECutZTWopxmi714vB1tCrFlULfL3y/Xe17NFCv wMHWg2yk84ikyLJkkeSkrv1mo1OHQ2zr1R3peCUEVvgJQ/ZzmMEE/cerQZWogT4RLrP2 zKrrdweGTbHaZh5o/KOBbIpeD6yq7NWZKt/HdhLRpDqdwWYqx6Uwve4xA/3k7XAAObDL b+nQ== X-Gm-Message-State: AOAM533lLx3UoPfFVH9P4L8lAvFWNDFA3VMUuPIxFuxfF6S4IIyBRQc9 ZKmynYN8WZy/5Mcdn/EWZH1JmrVQtL4= X-Google-Smtp-Source: ABdhPJxZRD7qRj757vSfAqMzSZaY9qz4SVtt8N5uQOyl3Bu0Qb0xMRv777xHqz8lVfWWRVzx7elN2g== X-Received: by 2002:ac8:5c4e:: with SMTP id j14mr18596780qtj.241.1605904523689; Fri, 20 Nov 2020 12:35:23 -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 g9sm2765922qtq.21.2020.11.20.12.35.22 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:23 -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 0AKKZL3O029256 for ; Fri, 20 Nov 2020 20:35:21 GMT Subject: [PATCH v2 018/118] NFSD: Replace READ* macros that decode the fattr4 umask attribute From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:21 -0500 Message-ID: <160590452194.1340.6979108487209267027.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a5207a36199c..046fe62bfa29 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -356,7 +356,6 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, { unsigned int starting_pos; u32 attrlist4_count; - u32 dummy32; DECODE_HEAD; iattr->ia_valid = 0; @@ -472,13 +471,16 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, return status; } if (bmval[2] & FATTR4_WORD2_MODE_UMASK) { + u32 mode, mask; + if (!umask) - goto xdr_error; - READ_BUF(8); - dummy32 = be32_to_cpup(p++); - iattr->ia_mode = dummy32 & (S_IFMT | S_IALLUGO); - dummy32 = be32_to_cpup(p++); - *umask = dummy32 & S_IRWXUGO; + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &mode) < 0) + return nfserr_bad_xdr; + iattr->ia_mode = mode & (S_IFMT | S_IALLUGO); + if (xdr_stream_decode_u32(argp->xdr, &mask) < 0) + return nfserr_bad_xdr; + *umask = mask & S_IRWXUGO; iattr->ia_valid |= ATTR_MODE; } From patchwork Fri Nov 20 20:35:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922267 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C415C6379F for ; Fri, 20 Nov 2020 20:35:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EA3F822464 for ; Fri, 20 Nov 2020 20:35:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MvWBNo+1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729875AbgKTUfa (ORCPT ); Fri, 20 Nov 2020 15:35:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728360AbgKTUfa (ORCPT ); Fri, 20 Nov 2020 15:35:30 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1EAEEC0613CF for ; Fri, 20 Nov 2020 12:35:30 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id 7so8137773qtp.1 for ; Fri, 20 Nov 2020 12:35:30 -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=wXGqYk1Wmp5D9SNUetrzCSyiQfx+pQFcxJFauaq/ods=; b=MvWBNo+1+dP4pd+c03XQoSdI6VtEN5RxWab5t9X3uBSOgPJMxdUI3EfJohtbSPy/JP gfDlTBrpps6ourNKVuBeN+CkD+PN6rT3xlPeZEBJh4kw7DboNVV4KqrLjcJ8LuW5cNWG vsn19s4QBZI+Ll/Hh2fnEZB8Zd2NIh7GgxSQQDaQzFAANpMcaCGeUP4Pud3eRvXo8fuT 0NN6ugPDoS0LFw8S4iMLXejHwgXbtSNg6QeAnVz4pRg84yhwMEeDqyzii6wfSveLC9Am iiKCShYoF43gZnxMlk5/ccMXACxuSFy8guLW5Jyn4Qsq1IwgsbtrdUjBDT2lhYCdiWCx xoXA== 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=wXGqYk1Wmp5D9SNUetrzCSyiQfx+pQFcxJFauaq/ods=; b=Zbq3VGMaEsni5I3tdhC/DMrlvyJWjXi0KglL92h109vLMlJoqrOhOWUElNNz45bgoz 1O2KE1Q3kuCFcb4xc9x5hAFzQLdsxRsmVb/x6vyMV5AqjT7UDJhStbGI6KFJC+ASCY4V dv9SkYyKjuW2kklfa9fJ8uAsn+bkgIMkd36jYA0cujO+EhtoEbpxRZgPEmySCFbljklC 06GD3oswWdcinUm9chbHbcTvP33xFGpJJgs63uWeFJzbmXPfMLJ6vXoEy+Wf4Owev5ky Bd/ZPQaIJrPnYOUiPMf91SBZYS4P7BS82Yb9OHT6Fx5l16yFWDBNSmaVcb/FSb2gqB5d PBfA== X-Gm-Message-State: AOAM530WbnlAUg9S9q8J/bwTbZTspvA0kcZtXR36Wqek81+CuhfdOzjV c1gWThGMiKe24rn01EZQ2kDgVNkZEis= X-Google-Smtp-Source: ABdhPJxKSaDA2QuqFaOLo9PCCkLo8xOh2nO1kqvvVCjxEC9rwpTstXC6xrEAc2uNijSWva/MN4oE6w== X-Received: by 2002:ac8:46cf:: with SMTP id h15mr16036709qto.99.1605904529052; Fri, 20 Nov 2020 12:35:29 -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 x4sm3001351qtm.48.2020.11.20.12.35.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:28 -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 0AKKZRko029259 for ; Fri, 20 Nov 2020 20:35:27 GMT Subject: [PATCH v2 019/118] NFSD: Replace READ* macros in nfsd4_decode_fattr() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:27 -0500 Message-ID: <160590452734.1340.16262869614648652550.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 046fe62bfa29..c7f14f0db432 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -350,17 +350,17 @@ nfsd4_decode_seclabel(struct nfsd4_compoundargs *argp, } static __be32 -nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, - struct iattr *iattr, struct nfs4_acl **acl, - struct xdr_netobj *label, int *umask) +nfsd4_decode_fattr4(struct nfsd4_compoundargs *argp, u32 *bmval, u32 bmlen, + struct iattr *iattr, struct nfs4_acl **acl, + struct xdr_netobj *label, int *umask) { unsigned int starting_pos; u32 attrlist4_count; + __be32 *p, status; - DECODE_HEAD; iattr->ia_valid = 0; - if ((status = nfsd4_decode_bitmap(argp, bmval))) - return status; + if (xdr_stream_decode_uint32_array(argp->xdr, bmval, bmlen) < 0) + return nfserr_bad_xdr; if (bmval[0] & ~NFSD_WRITEABLE_ATTRS_WORD0 || bmval[1] & ~NFSD_WRITEABLE_ATTRS_WORD1 @@ -488,7 +488,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (attrlist4_count != xdr_stream_pos(argp->xdr) - starting_pos) return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 @@ -676,9 +676,10 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create if ((status = check_filename(create->cr_name, create->cr_namelen))) return status; - status = nfsd4_decode_fattr(argp, create->cr_bmval, &create->cr_iattr, - &create->cr_acl, &create->cr_label, - &create->cr_umask); + status = nfsd4_decode_fattr4(argp, create->cr_bmval, + ARRAY_SIZE(create->cr_bmval), + &create->cr_iattr, &create->cr_acl, + &create->cr_label, &create->cr_umask); if (status) goto out; @@ -927,9 +928,10 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) switch (open->op_createmode) { case NFS4_CREATE_UNCHECKED: case NFS4_CREATE_GUARDED: - status = nfsd4_decode_fattr(argp, open->op_bmval, - &open->op_iattr, &open->op_acl, &open->op_label, - &open->op_umask); + status = nfsd4_decode_fattr4(argp, open->op_bmval, + ARRAY_SIZE(open->op_bmval), + &open->op_iattr, &open->op_acl, + &open->op_label, &open->op_umask); if (status) goto out; break; @@ -942,9 +944,10 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) goto xdr_error; READ_BUF(NFS4_VERIFIER_SIZE); COPYMEM(open->op_verf.data, NFS4_VERIFIER_SIZE); - status = nfsd4_decode_fattr(argp, open->op_bmval, - &open->op_iattr, &open->op_acl, &open->op_label, - &open->op_umask); + status = nfsd4_decode_fattr4(argp, open->op_bmval, + ARRAY_SIZE(open->op_bmval), + &open->op_iattr, &open->op_acl, + &open->op_label, &open->op_umask); if (status) goto out; break; @@ -1180,8 +1183,10 @@ nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *seta status = nfsd4_decode_stateid4(argp, &setattr->sa_stateid); if (status) return status; - return nfsd4_decode_fattr(argp, setattr->sa_bmval, &setattr->sa_iattr, - &setattr->sa_acl, &setattr->sa_label, NULL); + return nfsd4_decode_fattr4(argp, setattr->sa_bmval, + ARRAY_SIZE(setattr->sa_bmval), + &setattr->sa_iattr, &setattr->sa_acl, + &setattr->sa_label, NULL); } static __be32 From patchwork Fri Nov 20 20:35:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922269 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 849E8C6379D for ; Fri, 20 Nov 2020 20:35:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2F073221EB for ; Fri, 20 Nov 2020 20:35:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BNcyoR7q" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731112AbgKTUfh (ORCPT ); Fri, 20 Nov 2020 15:35:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731297AbgKTUfh (ORCPT ); Fri, 20 Nov 2020 15:35:37 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89BA2C0613CF for ; Fri, 20 Nov 2020 12:35:35 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id 9so1115540qvk.9 for ; Fri, 20 Nov 2020 12:35:35 -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=MvJoz3c9VAMHOM2nRqmv18CkcSDqWkfS+0Cao0Hj5Dc=; b=BNcyoR7qeuJIb0XD3gJt0YiIne/8HwCTpTq7lZ9O2Ws0kiy1A+rExmmDRumWWtqbfD QQQfa0Lvq6lWXIEx1diQmINjEN5Iin6QloOz28eAhC0T7SjtyCJftoo0bCU0aX6iUCjT gdqj7AwKzbsrOlyPLJJRJpK1Zha1tiFvxZ7VojqEcyINmao6P9DDG8TyCFlBrT002L5L Dq8pGMt3AkMfMdRtLYS3PgvdkRFH0b473Y+Q4PSr8CHDV8K8Jy87Uvqscmlw+pR3A0Fm EEG8VPlK4L2kbNcBaFPdIJ/3hVEo2UeAcxHN3MkcgR3U2hdsoxIzkwQFcU1irh9R8rRH idPA== 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=MvJoz3c9VAMHOM2nRqmv18CkcSDqWkfS+0Cao0Hj5Dc=; b=H0iD+jGdECpP9SOlb6Fx/yLeluxWDYAimGLSXdsLm1fqcKvUxOyVnK6BXZW07O4aOI QuJAAjis9HUGhr7FVrRHMH6m3igfcaAoHBroPJ1II4jZbeLzIpY+7qFB/8kgtj1cp05+ Omq6cnYnS4xHtNFfGQb6XFpzgqK1ufzIhVvJ81BanL4JqKBVcKNNRmZjdpGfonS/ezGo wkqbw3Esb7AMysb8uS2d1Tnymkhzua8AI3kbw8oNaKOPNn9dtNLo91d+hcRcvSR1xhdK EJQIbSAN8WFLnAxCbTzDFnUPbYq+Cv4cQVtw+D6uOTMvNKtsTra9lX2ReaATC4a1mV4i Etig== X-Gm-Message-State: AOAM530z4ZxSQBZbsbFhIn65rXPGM3Qk7UeY8qpjnvaHTqUK/0vgV8/k BQSnL+uGX3alknZL+DO2MEb0vKSYlGc= X-Google-Smtp-Source: ABdhPJwpfhQUrOwh9FYF0KXGyKvM2+3RYlSJ6wAaK2p4ccQVnMTl4/yvVwNhh+lyc2XMEq/lceGwEQ== X-Received: by 2002:a05:6214:40c:: with SMTP id z12mr18062181qvx.25.1605904534402; Fri, 20 Nov 2020 12:35:34 -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 l22sm2799729qke.118.2020.11.20.12.35.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:33 -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 0AKKZWA2029262 for ; Fri, 20 Nov 2020 20:35:32 GMT Subject: [PATCH v2 020/118] NFSD: Replace READ* macros in nfsd4_decode_create() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:32 -0500 Message-ID: <160590453273.1340.8609162090280267676.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org A dedicated decoder for component4 is introduced here, which will be used by other operation decoders in subsequent patches. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 58 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 18 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index c7f14f0db432..4a5b7bc21dab 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -90,6 +90,8 @@ check_filename(char *str, int len) if (len == 0) return nfserr_inval; + if (len > NFS4_MAXNAMLEN) + return nfserr_nametoolong; if (isdotent(str, len)) return nfserr_badname; for (i = 0; i < len; i++) @@ -203,6 +205,27 @@ static char *savemem(struct nfsd4_compoundargs *argp, __be32 *p, int nbytes) return ret; } +static __be32 +nfsd4_decode_component4(struct nfsd4_compoundargs *argp, char **namp, u32 *lenp) +{ + __be32 *p, status; + + if (xdr_stream_decode_u32(argp->xdr, lenp) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, *lenp); + if (!p) + return nfserr_bad_xdr; + status = check_filename((char *)p, *lenp); + if (status) + return status; + *namp = svcxdr_tmpalloc(argp, *lenp); + if (!*namp) + return nfserr_jukebox; + memcpy(*namp, p, *lenp); + + return nfs_ok; +} + static __be32 nfsd4_decode_time(struct nfsd4_compoundargs *argp, struct timespec64 *tv) { @@ -643,24 +666,27 @@ nfsd4_decode_commit(struct nfsd4_compoundargs *argp, struct nfsd4_commit *commit static __be32 nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create) { - DECODE_HEAD; + __be32 *p, status; - READ_BUF(4); - create->cr_type = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &create->cr_type) < 0) + return nfserr_bad_xdr; switch (create->cr_type) { case NF4LNK: - READ_BUF(4); - create->cr_datalen = be32_to_cpup(p++); - READ_BUF(create->cr_datalen); + if (xdr_stream_decode_u32(argp->xdr, &create->cr_datalen) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, create->cr_datalen); + if (!p) + return nfserr_bad_xdr; create->cr_data = svcxdr_dupstr(argp, p, create->cr_datalen); if (!create->cr_data) return nfserr_jukebox; break; case NF4BLK: case NF4CHR: - READ_BUF(8); - create->cr_specdata1 = be32_to_cpup(p++); - create->cr_specdata2 = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &create->cr_specdata1) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &create->cr_specdata2) < 0) + return nfserr_bad_xdr; break; case NF4SOCK: case NF4FIFO: @@ -668,22 +694,18 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create default: break; } - - READ_BUF(4); - create->cr_namelen = be32_to_cpup(p++); - READ_BUF(create->cr_namelen); - SAVEMEM(create->cr_name, create->cr_namelen); - if ((status = check_filename(create->cr_name, create->cr_namelen))) + status = nfsd4_decode_component4(argp, &create->cr_name, + &create->cr_namelen); + if (status) return status; - status = nfsd4_decode_fattr4(argp, create->cr_bmval, ARRAY_SIZE(create->cr_bmval), &create->cr_iattr, &create->cr_acl, &create->cr_label, &create->cr_umask); if (status) - goto out; + return status; - DECODE_TAIL; + return nfs_ok; } static inline __be32 From patchwork Fri Nov 20 20:35:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922271 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 875B3C2D0E4 for ; Fri, 20 Nov 2020 20:35:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 30C5D221EB for ; Fri, 20 Nov 2020 20:35:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="n3l+GhRb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731319AbgKTUfm (ORCPT ); Fri, 20 Nov 2020 15:35:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60906 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731297AbgKTUfm (ORCPT ); Fri, 20 Nov 2020 15:35:42 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B0F5BC0613CF for ; Fri, 20 Nov 2020 12:35:40 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id q22so10209268qkq.6 for ; Fri, 20 Nov 2020 12:35:40 -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=0RKn2qkYQQCmFBu/71RLbGyuH4twFB3QQrKOEZLHLUc=; b=n3l+GhRbZCyowjoYepyj6/L5a1+FKGk/Fz2KhMCZ5IajuH27EgE2t4xkZvzgit1BA6 4PV+0shUiAxJjZ8ifx1jhpE+nKTUWf9vc/58ESkkPOMDZK3vDQvmLD0RmXZef92S+9e1 XBs+ITaYTmBC22lE1+X53HOB0Acz0zEc4r1Fsr4je1ruCwzGZ5BV3NSMCzuutVLkzRfq 0Bu96ElMTK6UNmLRcY+RKjltgWh4RPl3gNV8iqdvzo/KFNlE9F128F5zJOS00yGLx3Or oCJG654xnsDAQfvsN4rFPamt7eTOe8LAt9IfG+RAMoJLyzICrX+8TtYrlnAlRilxVXEi L6zA== 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=0RKn2qkYQQCmFBu/71RLbGyuH4twFB3QQrKOEZLHLUc=; b=X6WNZqJaU+uXtl3CTVW6FIJcfL5U34Ohfwc8Mh/511Wl03I1UoL/VCAF3BD22XPhQV nkkTKzw9pyUjU+oR7Np+rkZwEm8wdCgR0JEGt21uY6QB7ds+tmkzh6DdYYXSCJNgIuar WO2PV+u2Ng/0P1v9EBr4HwyG4HsPa3mVkxy/ZV26gn/yOyysHCRGWEbC5xvi0CNcrSZj hKD6xmpPG2AsEAHXxx5XCFR1enI0puxiuPPBZMMcfv//PEjgzV8ZKZ496fBgKzoHUCS2 VGJ6fHSXh77UPP7i1HdRENan7uvJdakP5NHPB+x+vEzencBBF5b3VThnRd6V+vUvfDU7 F6cA== X-Gm-Message-State: AOAM533oPnkAS6D9DNnoM2Jy0dWrdp7fIou+TOa14q6IIY3MMQItclJb Z0P1amoF9DXLdFD4z7qejVZ4OWjyD7U= X-Google-Smtp-Source: ABdhPJy7JeT1Wue55esAnLyYEtQcMaOslW0kplQgVRpN/MJTkzQM1fmsePfgB3oR0g0rjgxD8HxSBw== X-Received: by 2002:a37:8c41:: with SMTP id o62mr17123095qkd.240.1605904539697; Fri, 20 Nov 2020 12:35:39 -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 v15sm2561122qto.74.2020.11.20.12.35.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:39 -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 0AKKZcel029265 for ; Fri, 20 Nov 2020 20:35:38 GMT Subject: [PATCH v2 021/118] NFSD: Replace READ* macros in nfsd4_decode_getattr() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:38 -0500 Message-ID: <160590453805.1340.10556319533725753532.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 4a5b7bc21dab..8594d8751b7b 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -717,7 +717,10 @@ nfsd4_decode_delegreturn(struct nfsd4_compoundargs *argp, struct nfsd4_delegretu static inline __be32 nfsd4_decode_getattr(struct nfsd4_compoundargs *argp, struct nfsd4_getattr *getattr) { - return nfsd4_decode_bitmap(argp, getattr->ga_bmval); + if (xdr_stream_decode_uint32_array(argp->xdr, getattr->ga_bmval, + ARRAY_SIZE(getattr->ga_bmval)) < 0) + return nfserr_bad_xdr; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:35:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922273 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ABC3EC56202 for ; Fri, 20 Nov 2020 20:35:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 513712223F for ; Fri, 20 Nov 2020 20:35:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IQ4+Fktr" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731394AbgKTUfq (ORCPT ); Fri, 20 Nov 2020 15:35:46 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731318AbgKTUfq (ORCPT ); Fri, 20 Nov 2020 15:35:46 -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 28CE9C0613CF for ; Fri, 20 Nov 2020 12:35:46 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id q22so10209508qkq.6 for ; Fri, 20 Nov 2020 12:35:46 -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=vxuxXLBxT7Heh/YRAALcLe4qTiKcDDbTFBGZdzCuJIs=; b=IQ4+Fktr/e1ug+77hled+1LSz0xUBWprZY/uHnciuDXgUlmW6uvG6/wD/oJK7aTvpl RB7RF61ADeiidHZdRSuS+7gC4+Mmo6rk5tXtpi1PfW6pe8AfwB9lnY0fHjMf0mJ/IKsd P95yOsW9a9W9qw2A31Ve25nKDiMB2IXLirEVt82GnBgNjQiJdExsKXIx5E4coaBSChM6 uPaPaXjh9+L+e35WzuQa70onp3n3Wr/c3EBEeig1AqCQVRQKi4R/tPdwebDjReRQ5F6P nGaAejMoqebPSKMXDHFG/FRCw+9VCfBht/6uOYSAgLh+ZF7StyJVHeBhCr5XrF8I4LYf UmPQ== 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=vxuxXLBxT7Heh/YRAALcLe4qTiKcDDbTFBGZdzCuJIs=; b=j+zbeSrn6FYfl9hIHJgO6/GiEQulHYsk4E8u7VVjSda+QIVIexzJjwyDqB0b4I4QzI z91iMZ8L25yclYeUwAxZr6k5SUBfUUEMHclqj24bzvC9R09g+QedCRgJIAmgYNpNQTwE wjx0Z0fpHIvkpqHh38Fv/jA+tMSx8SS+cyK0lHJVxvDtyVR9xj1sGdRZLZUpIMsGEt/b l9ZCOstpuuwROsuM34aJ7tRKA3re0WBm/Pg/0B0fV6pDbejH+1khw417HZqVOAJN59gu 1W20ZvykOBjj6yAdbLXCFq8ihumi4qVZH0PnnkQaaFOyztWLl58LFGeG0F+kIYMn3NQf qLmg== X-Gm-Message-State: AOAM530+I4ME8SEq/2FE8I6B5bUe3mXPaUH3+tcgEeP8CRRDNnJ0HIjY Qrzto61Ok1MhedD6kzQ62AGjC0QPhDg= X-Google-Smtp-Source: ABdhPJzS7Fx+budZo5MKV0HSKD5dqyqVmfhuVwdK2NX4g05okj2NEqxKlYIeQbAH+PECOmLSLVYcQw== X-Received: by 2002:a37:7201:: with SMTP id n1mr17487292qkc.148.1605904545063; Fri, 20 Nov 2020 12:35:45 -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 g18sm2630080qtv.79.2020.11.20.12.35.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:44 -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 0AKKZhux029268 for ; Fri, 20 Nov 2020 20:35:43 GMT Subject: [PATCH v2 022/118] NFSD: Replace READ* macros in nfsd4_decode_link() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:43 -0500 Message-ID: <160590454336.1340.3378637232286425313.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 8594d8751b7b..8c0d4c4d7b42 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -726,16 +726,7 @@ nfsd4_decode_getattr(struct nfsd4_compoundargs *argp, struct nfsd4_getattr *geta static __be32 nfsd4_decode_link(struct nfsd4_compoundargs *argp, struct nfsd4_link *link) { - DECODE_HEAD; - - READ_BUF(4); - link->li_namelen = be32_to_cpup(p++); - READ_BUF(link->li_namelen); - SAVEMEM(link->li_name, link->li_namelen); - if ((status = check_filename(link->li_name, link->li_namelen))) - return status; - - DECODE_TAIL; + return nfsd4_decode_component4(argp, &link->li_name, &link->li_namelen); } static __be32 From patchwork Fri Nov 20 20:35:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922275 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B69D7C56202 for ; Fri, 20 Nov 2020 20:35:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 59FD0221EB for ; Fri, 20 Nov 2020 20:35:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XYTQbjBJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731166AbgKTUfv (ORCPT ); Fri, 20 Nov 2020 15:35:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731165AbgKTUfv (ORCPT ); Fri, 20 Nov 2020 15:35:51 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6ACA7C0613CF for ; Fri, 20 Nov 2020 12:35:51 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id k4so10162355qko.13 for ; Fri, 20 Nov 2020 12:35:51 -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=KsqcxCQFDd4GFX51/pGCqM+CtfAlKt+kTbA+7evFQvY=; b=XYTQbjBJnmMtwEve87erNAILONkxPEfLX8O2GsWZ3U+JxfNsUVDqzEyFpdr7YOqCcy vUep/3GNUJyw1+AVxt9BzgpAUwYN9uWoJrIeiC5a4BqsIbz9qcmc9jbKeXPhXQ/QehBh lBo/wmWBfnQoR5s7rmXdgB7NpOkf0nGy9DR9Zeuz4O358sYccpXW84K3Xi/n65aQuemd vBd6ncG0Rz2Drd/ZfEgNQAB24RuExzcgf+37JTbLHiC/+lqxElN/wnFvn19nG0qeKGuC 7kfq1y77lGK6fHFaFIrBgsaNLMGsycW09eoxnng1xifbR/MJ2O707GZHvq66lHh5HJWP SGcg== 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=KsqcxCQFDd4GFX51/pGCqM+CtfAlKt+kTbA+7evFQvY=; b=r+/owBwBFlNLybO6VyaNyemvQ9oT2ti8rR6ABZBDlkF5AS1YtdGrUt3pwDaDSO6LnB AHD9k5X0hYstD6zaesMNn1ykedQkZTJEFP8kirxY6S/Ds8xs5y9yVXkNdvBtgQbu/Fjr 2rf1hQi59tYYqFYjbz8HiMDAPcV4qA28gud6Qw4QD3RJA/cv31eqFRp3VPhScuFTSB+/ +XNUsugZdXFxqHXrm1SGo6fedgf72kCgCDwYfSsciLgvzlT5zA2JicnwZqOogi+R64vh lBlpEIHrjfAT2HB/A/DCRaJnBoaZgM3LqZdag0+WR0Jg/arZD6tJasXqEAF6lHf1TMt7 a4BA== X-Gm-Message-State: AOAM530Nj/K1KSvt6dQOKb66aKrx8TbhXtnaaYCAWvdQzz4FgfnM+50T L9MY1UmDH3cawxikGksFkh/qsFHfA4w= X-Google-Smtp-Source: ABdhPJxHJvNbG5yyy3NWQ383WS/pdmdBH0/22NEG/o7is594n04esv3eaVaVwuqxCOLBeXP03Hq3sQ== X-Received: by 2002:a37:9d48:: with SMTP id g69mr18126714qke.398.1605904550382; Fri, 20 Nov 2020 12:35:50 -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 d3sm2647510qth.70.2020.11.20.12.35.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:35:49 -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 0AKKZmL8029271 for ; Fri, 20 Nov 2020 20:35:48 GMT Subject: [PATCH v2 023/118] NFSD: Relocate nfsd4_decode_opaque() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:48 -0500 Message-ID: <160590454868.1340.9283263045389488150.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Enable nfsd4_decode_opaque() to be used in more decoders, and replace the READ* macros in nfsd4_decode_opaque(). Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 8c0d4c4d7b42..ec2cad8477e0 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -205,6 +205,33 @@ static char *savemem(struct nfsd4_compoundargs *argp, __be32 *p, int nbytes) return ret; } + +/* + * NFSv4 basic data type decoders + */ + +static __be32 +nfsd4_decode_opaque(struct nfsd4_compoundargs *argp, struct xdr_netobj *o) +{ + __be32 *p; + u32 len; + + if (xdr_stream_decode_u32(argp->xdr, &len) < 0) + return nfserr_bad_xdr; + if (len == 0 || len > NFS4_OPAQUE_LIMIT) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, len); + if (!p) + return nfserr_bad_xdr; + o->data = svcxdr_tmpalloc(argp, len); + if (!o->data) + return nfserr_jukebox; + o->len = len; + memcpy(o->data, p, len); + + return nfs_ok; +} + static __be32 nfsd4_decode_component4(struct nfsd4_compoundargs *argp, char **namp, u32 *lenp) { @@ -890,22 +917,6 @@ static __be32 nfsd4_decode_share_deny(struct nfsd4_compoundargs *argp, u32 *x) return nfserr_bad_xdr; } -static __be32 nfsd4_decode_opaque(struct nfsd4_compoundargs *argp, struct xdr_netobj *o) -{ - DECODE_HEAD; - - READ_BUF(4); - o->len = be32_to_cpup(p++); - - if (o->len == 0 || o->len > NFS4_OPAQUE_LIMIT) - return nfserr_bad_xdr; - - READ_BUF(o->len); - SAVEMEM(o->data, o->len); - - DECODE_TAIL; -} - static __be32 nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) { From patchwork Fri Nov 20 20:35:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922277 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FDF6C2D0E4 for ; Fri, 20 Nov 2020 20:35:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0BA43221EB for ; Fri, 20 Nov 2020 20:35:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TQDvz5Pg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731395AbgKTUf5 (ORCPT ); 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-Google-Smtp-Source: ABdhPJy/JYBR4/v1CQJyOPtlAk+SQqa+WX5i2RfQxQcqfv68UyaPDQovD0srhbQFlm2RwS2cct+Bwg== 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 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) From patchwork Fri Nov 20 20:35:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922279 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CD42CC2D0E4 for ; Fri, 20 Nov 2020 20:36:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6C6C7221EB for ; Fri, 20 Nov 2020 20:36:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Lnhkzm+4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731397AbgKTUgE (ORCPT ); Fri, 20 Nov 2020 15:36:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731165AbgKTUgD (ORCPT ); Fri, 20 Nov 2020 15:36:03 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C172C0613CF for ; Fri, 20 Nov 2020 12:36:02 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id v143so10219394qkb.2 for ; Fri, 20 Nov 2020 12:36:02 -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=zRuQC2llKWA28mnYfcQi05tMxEKpw4RhZV1a8oqyizA=; b=Lnhkzm+4X3/ENN8XOvpuhJUwfkJ7HQqce/q4oEKDjc0BcottkFwg8FJR1MB8MW3b5g glFr03bJKXQBRmgj06KDjGaEygdzAphVzUUbIYAhnSZTuiChBlHWW24cHp/bWR16vWbv Q6cWjmZixSO7J5FW33SwiAYMG1LV85s+8WIItaC7gNjb4rdgHckljnjbax0hbEGaTXLw 2MpOWfXDZKa2Ea5CRzKljujcNgDpheCHnr51xROZ+MUoV2/BQsJmbcG7F88MkONJS8G1 P3XbBCzu182onJV5wlt7FWAIR0GKFhWjVNVcW/3Mi83MEf/2ZxZNaiXlYvAEiujPW5cH OCYw== 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=zRuQC2llKWA28mnYfcQi05tMxEKpw4RhZV1a8oqyizA=; b=b6MF1H9q0vy1l/OmJZ4/J226htqAOoaDVx91gchNvX2CZ+csEpJE3MDtRSYr7pc899 cxLh3MOP9DO25vWPoSWR0HITsAc6gEMB914LOmBBtDdYbvbka/vTfnnBp30+H0j4S4un vGjydQ5BJCCpAmHl3yqbSF4HnvGA9tqeb2AyFso+GepNwgGCTMTeToFkE0TkjJUN/RD5 FeYm5AEcEGvHFoHQPd4tC3N6UT0VJmcjiuKvtYFCzwV0UlD4ZVxXkzoJ8HbzhPu10krP b3GgqvETAOdGuT3l/cYu0ft1dxb4HdHwabNl9tgi+R4Drlsi0swoEMmNA0Vaw8Q5D3XO tq7A== X-Gm-Message-State: AOAM531BHA1c8WUw3Snb5xh+qEAhWazpLjPsCg3/O9gSKvflmapGlq6T omkQMUCFQVzaicOCbZPHLMmVdPEFh/4= X-Google-Smtp-Source: ABdhPJzgOCvOm7FwBcxfaBL6dmvbCz73HBSuswOG5low9aVjYcomDYlSOWr0af3X3UsCs8/fpvtkKw== X-Received: by 2002:a37:8c05:: with SMTP id o5mr18881209qkd.396.1605904560857; Fri, 20 Nov 2020 12:36:00 -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 r14sm2809332qtu.25.2020.11.20.12.36.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:00 -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 0AKKZxc6029277 for ; Fri, 20 Nov 2020 20:35:59 GMT Subject: [PATCH v2 025/118] NFSD: Add helper for decoding locker4 From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:35:59 -0500 Message-ID: <160590455932.1340.14843743077242511114.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 64 ++++++++++++++++++++++++++++++-------------- include/linux/sunrpc/xdr.h | 21 ++++++++++++++ 2 files changed, 64 insertions(+), 21 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a7c9a0368951..94219ceb2ea2 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -780,6 +780,48 @@ nfsd4_decode_link(struct nfsd4_compoundargs *argp, struct nfsd4_link *link) return nfsd4_decode_component4(argp, &link->li_name, &link->li_namelen); } +static __be32 +nfsd4_decode_open_to_lock_owner4(struct nfsd4_compoundargs *argp, + struct nfsd4_lock *lock) +{ + __be32 status; + + if (xdr_stream_decode_u32(argp->xdr, &lock->lk_new_open_seqid) < 0) + return nfserr_bad_xdr; + status = nfsd4_decode_stateid4(argp, &lock->lk_new_open_stateid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &lock->lk_new_lock_seqid) < 0) + return nfserr_bad_xdr; + return nfsd4_decode_state_owner4(argp, &lock->lk_new_clientid, + &lock->lk_new_owner); +} + +static __be32 +nfsd4_decode_exist_lock_owner4(struct nfsd4_compoundargs *argp, + struct nfsd4_lock *lock) +{ + __be32 status; + + status = nfsd4_decode_stateid4(argp, &lock->lk_old_lock_stateid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &lock->lk_old_lock_seqid) < 0) + return nfserr_bad_xdr; + + return nfs_ok; +} + +static __be32 +nfsd4_decode_locker4(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) +{ + if (xdr_stream_decode_bool(argp->xdr, &lock->lk_is_new) < 0) + return nfserr_bad_xdr; + if (lock->lk_is_new) + return nfsd4_decode_open_to_lock_owner4(argp, lock); + return nfsd4_decode_exist_lock_owner4(argp, lock); +} + static __be32 nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) { @@ -795,27 +837,7 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) lock->lk_reclaim = be32_to_cpup(p++); p = xdr_decode_hyper(p, &lock->lk_offset); p = xdr_decode_hyper(p, &lock->lk_length); - lock->lk_is_new = be32_to_cpup(p++); - - if (lock->lk_is_new) { - READ_BUF(4); - lock->lk_new_open_seqid = be32_to_cpup(p++); - status = nfsd4_decode_stateid4(argp, &lock->lk_new_open_stateid); - if (status) - return status; - READ_BUF(4); - lock->lk_new_lock_seqid = be32_to_cpup(p++); - 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) - return status; - READ_BUF(4); - lock->lk_old_lock_seqid = be32_to_cpup(p++); - } + status = nfsd4_decode_locker4(argp, lock); DECODE_TAIL; } diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 22b00104bc1a..abd45f03634f 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h @@ -555,6 +555,27 @@ static inline bool xdr_item_is_present(const __be32 *p) return *p != xdr_zero; } +/** + * xdr_stream_decode_bool - Decode a boolean + * @xdr: pointer to xdr_stream + * @ptr: pointer to a u32 in which to store the result + * + * Return values: + * %0 on success + * %-EBADMSG on XDR buffer overflow + */ +static inline ssize_t +xdr_stream_decode_bool(struct xdr_stream *xdr, __u32 *ptr) +{ + const size_t count = sizeof(*ptr); + __be32 *p = xdr_inline_decode(xdr, count); + + if (unlikely(!p)) + return -EBADMSG; + *ptr = (*p != xdr_zero); + return 0; +} + /** * xdr_stream_decode_u32 - Decode a 32-bit integer * @xdr: pointer to xdr_stream From patchwork Fri Nov 20 20:36:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922281 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACE73C56202 for ; Fri, 20 Nov 2020 20:36:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4F19B221EB for ; Fri, 20 Nov 2020 20:36:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EUvHBBF5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730782AbgKTUgH (ORCPT ); Fri, 20 Nov 2020 15:36:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730541AbgKTUgH (ORCPT ); Fri, 20 Nov 2020 15:36:07 -0500 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D0D6C0613CF for ; Fri, 20 Nov 2020 12:36:07 -0800 (PST) Received: by mail-qt1-x842.google.com with SMTP id f93so8074922qtb.10 for ; Fri, 20 Nov 2020 12:36:07 -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=nIwximQeRM9GZSSWJcNjVeNCPiTwgf/lgj+uZBeuy6s=; b=EUvHBBF5B0v7cgjKbgshr4OOzHPvmd928h2qM2BQC8T8C2udj1p/I6fyhluU/OMent HPYHbwqiPazGd2OGzbejU/jHXtIJcCeSF5kpedbewXEcnoE3dztBwAkA+pkDr5O5gMET oAIlllv1A0MqL3UwdbHSV+M5KP4lzVWD5G0uVtyP32KIirczg7lrs0q6xUfJ6hX4Sihc OgT5y+nbVNDLmwQf5xdpc2HtnIr/oHPoFw+RlqSchO/9/ZOtIxilHAJ9xH1taH4uX6rX F5DkotOdcHAgxm42SIb63TDpsx6ZRuO7xPWzznpwhBkuhM2dAmERU0ln8Gjepn24PJs/ osaA== 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=nIwximQeRM9GZSSWJcNjVeNCPiTwgf/lgj+uZBeuy6s=; b=knSdQ74GNaquBbZccE9kKeKQIPQAFGTaQs8B/q6prhb9pICt0Z/ij4ccRBoGWWeX0e j6KFOWeQ3i+CjWa16srwMQZ3pbIa2DvlbV2j/JoMLT85Q65z+YAL248GIkI6rho1avur cyzCuCA7OqH2/9s7cGenPu14QF0LOBGsQG+HrTjCq+PBV2x40fF8Kc75BkdvIpjEmQAG YbohvC2lmRDVwIEGTQrrOuNOlUSWSMdHgFqS3+t/kvsyXYSphwlK3VRuwYNky5xfIw/E 2ELVTtq8L2sxyU83Ho5IZMU/z8dT8/kFb9FXlbDzDMsENFsXE3tbOFYizZJRIeEfBjxz q6WQ== X-Gm-Message-State: AOAM533NuB7MPC/SiStaXgCHB2BOyzGAV6wd7LVugQQJUAyAgqSs9Ndh qGSiBlRskgIUjLG8EuRswK45i2ORVXw= X-Google-Smtp-Source: ABdhPJxXzejPuI8If9SjMOV5OJeRAPTXuXa3IDKM7VWirGAC32F2b/M3UHdYGtfqwkmxW2LZ5O7X6Q== X-Received: by 2002:ac8:1c28:: with SMTP id a37mr2620519qtk.356.1605904566248; Fri, 20 Nov 2020 12:36:06 -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 j63sm2659789qke.67.2020.11.20.12.36.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:05 -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 0AKKa4PU029280 for ; Fri, 20 Nov 2020 20:36:04 GMT Subject: [PATCH v2 026/118] NFSD: Replace READ* macros in nfsd4_decode_lock() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:04 -0500 Message-ID: <160590456454.1340.12535304431985619714.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 94219ceb2ea2..83a8f872ae9a 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -825,21 +825,17 @@ nfsd4_decode_locker4(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) static __be32 nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) { - DECODE_HEAD; - - /* - * type, reclaim(boolean), offset, length, new_lock_owner(boolean) - */ - READ_BUF(28); - lock->lk_type = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &lock->lk_type) < 0) + return nfserr_bad_xdr; if ((lock->lk_type < NFS4_READ_LT) || (lock->lk_type > NFS4_WRITEW_LT)) - goto xdr_error; - lock->lk_reclaim = be32_to_cpup(p++); - p = xdr_decode_hyper(p, &lock->lk_offset); - p = xdr_decode_hyper(p, &lock->lk_length); - status = nfsd4_decode_locker4(argp, lock); - - DECODE_TAIL; + return nfserr_bad_xdr; + if (xdr_stream_decode_bool(argp->xdr, &lock->lk_reclaim) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lock->lk_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lock->lk_length) < 0) + return nfserr_bad_xdr; + return nfsd4_decode_locker4(argp, lock); } static __be32 From patchwork Fri Nov 20 20:36:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922283 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 309EEC2D0E4 for ; Fri, 20 Nov 2020 20:36:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BD5EE2223F for ; Fri, 20 Nov 2020 20:36:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DwJIK3wS" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731165AbgKTUgN (ORCPT ); Fri, 20 Nov 2020 15:36:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731177AbgKTUgN (ORCPT ); Fri, 20 Nov 2020 15:36:13 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C8811C0613CF for ; Fri, 20 Nov 2020 12:36:12 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id d28so10172520qka.11 for ; Fri, 20 Nov 2020 12:36:12 -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=/s/arfaHoDYCO8KO5awtvsWLZgT/HYouOXH0F8xby4s=; b=DwJIK3wSxfNZ+2T9MB3dGN311IZ9wrtWZ+U2X8mIDyMOe535emELvCWax12eF5oxim 10knqozZZqcgD1KZrz+Ovd39HTiCBSgfpRIya1nMm6cZDgOCkg63gaRulLEduSwLTbDz OPevK7t7vEpan7gjk5J12pc1xReKwYJUSs8mtb1NPwkiLGRcJs4p5SoG3J8In0GdYqqo 4P87EMWuys47vJ9QvEziQqsUXqbm7lnxQAJvC0BIiLS4/Ot0BAy2IT0Xsok5zrX8Slj8 l17j420l0hcDuytQRwOPZZKkdvrINOZ1MgleYcp6mcnxBkeiLNT/L6e70l/3xeh0VsoB +gxg== 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=/s/arfaHoDYCO8KO5awtvsWLZgT/HYouOXH0F8xby4s=; b=tivlrqVV6oIFfOTnjFUY/evXLlWzQ1ZbW3J0ClrcAUYtGVbcOSyn68oV77urauvg8H SMa1qu2WvAXNpUs9zzq2QrOqwsmhmfdLRWOCCzoGkPU/Yj4iunouU6ImCGS2fI4IVmhI afRN8MZbrkPoG6nbMei3h01bJvZMw46+c96EaoV46bWDigpYrIVGD8fIZMo42cfiV8ub G+I6LzY25Sw8FXYAavs2R+YYPkj7LnxVDUCbq6oU6Xgnf3sH+RqrgjBcN1QtYtxr4nxa D4gQ+LyEPhSyiSGOQi617hmxcowqNM6Jvsv4qtGXG//Kqx3krBJ6RgPc/saSEfLY8sAC Iz7A== X-Gm-Message-State: AOAM532rtNnEXWyBSPEAZ0uP+0HPD4x1V7wUo2CQWwIXUZ1afWVmHyJT 2kbR63ThLiqncdyn0PmagXE9FlKhQt0= X-Google-Smtp-Source: ABdhPJwbeSRyGmVFiOfjCLAMYOC66+FcM+Yu6pe2SpqQmcLfEzSLJkeLhiS2A3BbhQW6QB9FcCUzqw== X-Received: by 2002:a37:6451:: with SMTP id y78mr18898623qkb.500.1605904571707; Fri, 20 Nov 2020 12:36:11 -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 p72sm2885248qke.110.2020.11.20.12.36.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:10 -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 0AKKa946029283 for ; Fri, 20 Nov 2020 20:36:09 GMT Subject: [PATCH v2 027/118] NFSD: Replace READ* macros in nfsd4_decode_lockt() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:09 -0500 Message-ID: <160590456986.1340.14336898333340009932.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 83a8f872ae9a..a465fb04d9ac 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -841,20 +841,16 @@ nfsd4_decode_lock(struct nfsd4_compoundargs *argp, struct nfsd4_lock *lock) static __be32 nfsd4_decode_lockt(struct nfsd4_compoundargs *argp, struct nfsd4_lockt *lockt) { - DECODE_HEAD; - - READ_BUF(32); - lockt->lt_type = be32_to_cpup(p++); - if((lockt->lt_type < NFS4_READ_LT) || (lockt->lt_type > NFS4_WRITEW_LT)) - goto xdr_error; - p = xdr_decode_hyper(p, &lockt->lt_offset); - p = xdr_decode_hyper(p, &lockt->lt_length); - COPYMEM(&lockt->lt_clientid, 8); - lockt->lt_owner.len = be32_to_cpup(p++); - READ_BUF(lockt->lt_owner.len); - READMEM(lockt->lt_owner.data, lockt->lt_owner.len); - - DECODE_TAIL; + if (xdr_stream_decode_u32(argp->xdr, &lockt->lt_type) < 0) + return nfserr_bad_xdr; + if ((lockt->lt_type < NFS4_READ_LT) || (lockt->lt_type > NFS4_WRITEW_LT)) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lockt->lt_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lockt->lt_length) < 0) + return nfserr_bad_xdr; + return nfsd4_decode_state_owner4(argp, &lockt->lt_clientid, + &lockt->lt_owner); } static __be32 From patchwork Fri Nov 20 20:36:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922349 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A640C2D0E4 for ; Fri, 20 Nov 2020 20:36:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1DCF4221EB for ; Fri, 20 Nov 2020 20:36:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Tp5yIxf6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731347AbgKTUgS (ORCPT ); Fri, 20 Nov 2020 15:36:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731177AbgKTUgS (ORCPT ); Fri, 20 Nov 2020 15:36:18 -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 18F0EC0613CF for ; Fri, 20 Nov 2020 12:36:18 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id u4so10180176qkk.10 for ; Fri, 20 Nov 2020 12:36:18 -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=IJjz3jJHkCfaA2LkK6cZURxL3SqsRpzARIYRCAZMufs=; b=Tp5yIxf6VNIpkcc7nzHttAMfm21nnWzv0xH7hkAl9ckun/LDD9b0B9y+2zHK7PASMB lKIzgBN2d3nPEJUjjEVt+AEQIu+9ObkUzd1ZAyhgcluYvsnLSCR7siZf20vN4VoQBvQ/ aBPFBilUm60cbaBkW5TnH7wKEy8h3drA/2ooQMOpE1z36lHb9LhjZ9h4LTbknmgmtjPu PU0vwglFG5D/YZ6+MLnipQ/YXK0YgEbVnW6jb7eAmGcX+tM0gbaVEM5RHsUzVSxJutcD Va9GtmgB/FETPV426qR/cgdxBI0cpCqxJ8hq2ighD+S+tqf5BkUOyW7sg2U8FFJoSl7Y pW5Q== 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=IJjz3jJHkCfaA2LkK6cZURxL3SqsRpzARIYRCAZMufs=; b=Hd60Md+cinLS5PrTeBZHggfZvdRVhHe66XXUbHl5gYbvPlZzSieVveR8PK7BwGLzWy 0M3bj81ZREBZp6NZ3ZZYthBctpACSSQrVp/dYBdBbdLyR/kqraixRORzYsNKuusqT4gg AfsNfRo8p+K7yyJdNHCa0el6iURCZb7fsvbhtT8ltJbD4w3ISxRLPrTmY+244/2mG+cC RvTtSsFBYQSbYbzhKmflm6C5dB62tRuINqofAz0981qNpTDtGKboF0tMOhU/mOwQg/H0 jHKTGYFxZekkQHupZdXEQC1v0aQ+K5Hh5DO+oJ32JZk1qIqnSmV+sw0mvM/8NcUI2acw H9OA== X-Gm-Message-State: AOAM53363xTF0IFSY/Bx+yftCNflOLZvTcdtjmUewaoIbUyURvIrYCT/ 7oeXH65x8dyIf0kJNlKSRbkJT5glE4Q= X-Google-Smtp-Source: ABdhPJzBznkl2Zus5HhQqp8b/dpyOpw+uhlRybyNEa4Y8LCiJgmrsxiNsqgz48WP2EXgnZnozYTzaQ== X-Received: by 2002:a37:9c83:: with SMTP id f125mr18715143qke.149.1605904577041; Fri, 20 Nov 2020 12:36:17 -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 r127sm2874794qke.64.2020.11.20.12.36.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:16 -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 0AKKaFuG029286 for ; Fri, 20 Nov 2020 20:36:15 GMT Subject: [PATCH v2 028/118] NFSD: Replace READ* macros in nfsd4_decode_locku() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:15 -0500 Message-ID: <160590457518.1340.5099419399810339068.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a465fb04d9ac..9b532e500e55 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -856,21 +856,23 @@ nfsd4_decode_lockt(struct nfsd4_compoundargs *argp, struct nfsd4_lockt *lockt) static __be32 nfsd4_decode_locku(struct nfsd4_compoundargs *argp, struct nfsd4_locku *locku) { - DECODE_HEAD; + __be32 status; - READ_BUF(8); - locku->lu_type = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &locku->lu_type) < 0) + return nfserr_bad_xdr; if ((locku->lu_type < NFS4_READ_LT) || (locku->lu_type > NFS4_WRITEW_LT)) - goto xdr_error; - locku->lu_seqid = be32_to_cpup(p++); + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &locku->lu_seqid) < 0) + return nfserr_bad_xdr; status = nfsd4_decode_stateid4(argp, &locku->lu_stateid); if (status) return status; - READ_BUF(16); - p = xdr_decode_hyper(p, &locku->lu_offset); - p = xdr_decode_hyper(p, &locku->lu_length); + if (xdr_stream_decode_u64(argp->xdr, &locku->lu_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &locku->lu_length) < 0) + return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:36:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922351 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC384C56202 for ; Fri, 20 Nov 2020 20:36:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 51B6B221EB for ; Fri, 20 Nov 2020 20:36:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tIdFF/qE" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731177AbgKTUgX (ORCPT ); Fri, 20 Nov 2020 15:36:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731209AbgKTUgX (ORCPT ); Fri, 20 Nov 2020 15:36:23 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FBCCC0613CF for ; Fri, 20 Nov 2020 12:36:23 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id q5so10164182qkc.12 for ; Fri, 20 Nov 2020 12:36:23 -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=efh/GwsacU+nWn6TEJsJXU06h8cS1liEo5ADwzWigZI=; b=tIdFF/qEzOdZVuQFpua3wf/EdWhw8SGklGIM2rCMBiqgc0BFeaxnfmONDhs0TRA6eO PYdktkcLVs9Q+AMCsy2+mKniJMv7U9sl71CUf2RmvF0VolY9x8fufM3OgjlbFHcBBPKQ AN7eV7iu2zhNneHqw10ln6lb5B/qUnDMHyY25GsBvBVQSojTH6uzn/n+jEKew+jivbda ITt483erXiqz7yBczVUzKTdgtUz4DbecGR8UpYRNrPcJk5f9Cw2PrlPnNM5xfTK89eIk jY8cZd6CgrgagzUEa4gwj84kuIbWJBTSa7So6P3Z1ilaTfDGwlYP6eb/3DN/JKBO3Jh9 Wajw== 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=efh/GwsacU+nWn6TEJsJXU06h8cS1liEo5ADwzWigZI=; b=HlcAH31RS0FeIoc7ugWCPBxsdlfog2M08cmKK84ALIh0duTkJF+EyLI3rSM7Ktz73X WHLEc5IqA38yjinzhr8ooBANJRFA3uC6SHsQZ+WiL8m1LnedQK5JYa0/Vtlt/Q+EMp/B U8P77eJ0VoG027lRF4pYdHAtTNNmx8fgSbWcASuPHhE/LjvyI3Uxz75pHnUACNxtzFL+ AVBXH18Obn18d1D61H1lSQeBx/guivGY+bslw+h19gLi8mQILVl9t8zR9jrGyJELnvGI cNQgw+uEKBrrCT4RFlMsb9PvaJNXpnC8ggq2mOszK92f/Ot6qK02u67DtDITiIS7a9Qx cqcQ== X-Gm-Message-State: AOAM533a3tGVrc0Sc6kQEY7DAqY5+tW7Uh8kfXsM4lq8II8A2VuBgNqW qRJItJAjPfWGkwvZ8y7mWOLTbBB8N6c= X-Google-Smtp-Source: ABdhPJxT9jfswCJFkk3HJYC830ajpFAH05alN2oDRvCvHzaaiRTW/+S8ebGI/aNbZEHpcg7wv/kSaA== X-Received: by 2002:a37:5243:: with SMTP id g64mr18595365qkb.248.1605904582234; Fri, 20 Nov 2020 12:36:22 -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 i192sm2986370qke.73.2020.11.20.12.36.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:21 -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 0AKKaKFL029289 for ; Fri, 20 Nov 2020 20:36:20 GMT Subject: [PATCH v2 029/118] NFSD: Replace READ* macros in nfsd4_decode_lookup() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:20 -0500 Message-ID: <160590458050.1340.11289077025297020633.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 9b532e500e55..2fe719f64ec9 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -878,16 +878,7 @@ nfsd4_decode_locku(struct nfsd4_compoundargs *argp, struct nfsd4_locku *locku) static __be32 nfsd4_decode_lookup(struct nfsd4_compoundargs *argp, struct nfsd4_lookup *lookup) { - DECODE_HEAD; - - READ_BUF(4); - lookup->lo_len = be32_to_cpup(p++); - READ_BUF(lookup->lo_len); - SAVEMEM(lookup->lo_name, lookup->lo_len); - if ((status = check_filename(lookup->lo_name, lookup->lo_len))) - return status; - - DECODE_TAIL; + return nfsd4_decode_component4(argp, &lookup->lo_name, &lookup->lo_len); } static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *share_access, u32 *deleg_want, u32 *deleg_when) From patchwork Fri Nov 20 20:36:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922353 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 053EEC56202 for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9B19A2223F for ; Fri, 20 Nov 2020 20:36:49 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="vb6hK7UR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731436AbgKTUg3 (ORCPT ); Fri, 20 Nov 2020 15:36:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32814 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731434AbgKTUg2 (ORCPT ); Fri, 20 Nov 2020 15:36:28 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85D19C0613CF for ; Fri, 20 Nov 2020 12:36:28 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id q5so10164416qkc.12 for ; Fri, 20 Nov 2020 12:36:28 -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=JZa5SATEjQC6Sdr0i1+ApJy7kslg+KrUqQhID7q0fHM=; b=vb6hK7URDjtVMoh1/rNC82V3tpN6XwRZbCQ1moAucuxpZxluSFnWY773+YVgkbje2R dzlxBzvFWKbLQ4Y3SMYq0wcjLIy0NgitB/ytYOwNGDcZseU+ppgbts8SU2rgfoCFkA1p imyyIuU9rjpcwMXofU8cSWa5hCvSy8SVi/6vWFFpwz17aOt4IQ411zWB2xw9ENTs0R+F /v4bzyFtcjMMSig0+DF4//zDUPcWx8kxHf91CKjZcMnwpOl5tbhkubg0Y77LCd4csCbv +7n4UNsT6xNux1yL3RaQEGCCu3OLTQIp257g+6cmAo9z7jfzy4AXHYtX9MDNj/MomB9T c8/w== 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=JZa5SATEjQC6Sdr0i1+ApJy7kslg+KrUqQhID7q0fHM=; b=tHMCsYXmPcJz6TfWAJBxLMYv0e4bHGkFDypnG4kca0qTM3doyHoTo8FuvkbN+qoapn siWcvXKIfCI5BT8hDVsGX6mlyCLMjc4cpS59TVxmIfNmbbC79XDV7Mlwdu72aroBiVEv 9b94OeHCThkypgyTCGqKKwJvKuIjGOKMfcACkjHbd36BTKEf2I8HExa+61lQRIIFIN68 mmvzbi/KBGNMn4jmcTBASOCWl8rQtcRNBMyerxIAvsPWLq0ElRUObeZ9rFMsH8Occ6ul Ir/bBSMaxxEz3LXXOkDod9SFyNin/2a9e+eGMSD27Hm/ZM65jh1NyhYaTu5lQ/0a+pNx tU1Q== X-Gm-Message-State: AOAM531fFc0/kjPBKZMbjRmGrqMH5vghsOCCGCsYsgZJU71YZVVcSWIJ 7b5HBu5eQRKtAYutF27peaBbYc4AQEA= X-Google-Smtp-Source: ABdhPJydYhi53vre8EzVy2OgFlGvKwRJPMAVTQI1g8LLUvu/RgNph/bvuDFY5VEqO6rvcsS+rGGdAg== X-Received: by 2002:a37:f513:: with SMTP id l19mr18954462qkk.36.1605904587474; Fri, 20 Nov 2020 12:36:27 -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 v15sm2562491qto.74.2020.11.20.12.36.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:26 -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 0AKKaPr5029292 for ; Fri, 20 Nov 2020 20:36:25 GMT Subject: [PATCH v2 030/118] NFSD: Add helper to decode NFSv4 verifiers From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:25 -0500 Message-ID: <160590458582.1340.15461865911567448466.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org This helper will be used to simplify decoders in subsequent patches. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 2fe719f64ec9..1bbb637d4625 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -282,6 +282,18 @@ nfsd4_decode_nfstime4(struct nfsd4_compoundargs *argp, struct timespec64 *tv) return nfs_ok; } +static __be32 +nfsd4_decode_verifier4(struct nfsd4_compoundargs *argp, nfs4_verifier *verf) +{ + __be32 *p; + + p = xdr_inline_decode(argp->xdr, NFS4_VERIFIER_SIZE); + if (!p) + return nfserr_bad_xdr; + memcpy(verf->data, p, sizeof(verf->data)); + return nfs_ok; +} + static __be32 nfsd4_decode_bitmap(struct nfsd4_compoundargs *argp, u32 *bmval) { @@ -994,14 +1006,16 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) goto out; break; case NFS4_CREATE_EXCLUSIVE: - READ_BUF(NFS4_VERIFIER_SIZE); - COPYMEM(open->op_verf.data, NFS4_VERIFIER_SIZE); + status = nfsd4_decode_verifier4(argp, &open->op_verf); + if (status) + return status; break; case NFS4_CREATE_EXCLUSIVE4_1: if (argp->minorversion < 1) goto xdr_error; - READ_BUF(NFS4_VERIFIER_SIZE); - COPYMEM(open->op_verf.data, NFS4_VERIFIER_SIZE); + status = nfsd4_decode_verifier4(argp, &open->op_verf); + if (status) + return status; status = nfsd4_decode_fattr4(argp, open->op_bmval, ARRAY_SIZE(open->op_bmval), &open->op_iattr, &open->op_acl, From patchwork Fri Nov 20 20:36:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922357 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63B58C63798 for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2400B221EB for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="drwo0ZQh" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731301AbgKTUge (ORCPT ); Fri, 20 Nov 2020 15:36:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731437AbgKTUgd (ORCPT ); Fri, 20 Nov 2020 15:36:33 -0500 Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A53B8C0613CF for ; Fri, 20 Nov 2020 12:36:33 -0800 (PST) Received: by mail-qv1-xf41.google.com with SMTP id x13so5304776qvk.8 for ; Fri, 20 Nov 2020 12:36:33 -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=cG/Gml7uczdP64/XPKiRPWOstwxwlYHF7gwENmq3ZLc=; b=drwo0ZQhX+SUCJwY9dkJnMrGosVc1pLLzWqQ4qDCwqgjzB+wvueyD52tLmwd2l/fB8 sp7chP8YC7fjprfYq74GkQ52bxnoS1lZzFkmR6/cITBO77uY5Cmyj71GWqg3ei7X7nEZ KfgVQE46zjh8zWAWcjo/gqWUGHrzO7F649haJ+GxeJ72AYvoQxpLClA8IoaXqmIfWn14 xpyZkasxmV8N0Xn7Qf5XS7he741RLjsUOCzX8LEXzQh+lOmjO+0bYlEqWCxBNGVFNBM0 5XqoYzsohVoPsabVm+FPHW7x4QZZQYLicn9r8+1IZMX6S29N3A4Po7Ns0pVMQuW/Wm25 kd7A== 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=cG/Gml7uczdP64/XPKiRPWOstwxwlYHF7gwENmq3ZLc=; b=c738SWmXXK2ncTXhOdUjAd93tIkpvAkgMgwCjGsX+6LHtJ6NZdzB/EmSrn/tZvf58I lfppZpZA2gNBpZ3mtpFr7z8W3wpzdSsGeTc15rd8qMHxj0rFAMJ3ENffst/hfGgI/G6I SbSLEjmOwpA95rnUhSATpe0wNsYtK6CSuiQEnp9+ym/NsFzR7mIH/bXRJAOeDZouUtV7 CFa0+RsIXGLsF4ivMWcDllT3xz/z1wLMkzsbCqnuKcbDcMKzyN6tgTj0EFoq1qj5b8sh OH4OC1BGYDrd32xuYTl2fY9El3HT0bPgHVIuZPBpHrsZacAIoCKUVGK2P3mAFVy3xN1q Zo0Q== X-Gm-Message-State: AOAM531NdSJDaN52IuJPm5W5d/MziwiA7Xvp0W0GgGLWFy2OTtHaXG0m ipWYP5nFzfL2vJ8Qt4n1GsxhpWc5XAs= X-Google-Smtp-Source: ABdhPJzOkmEzghbjKiTLZwCZQ3fEK+VlWwjUct85jPaYWa829B7g9rDWW+VIlZERf6Fg6dxH0/HmuQ== X-Received: by 2002:a0c:b59a:: with SMTP id g26mr17537919qve.26.1605904592551; Fri, 20 Nov 2020 12:36:32 -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 b64sm2837861qkg.19.2020.11.20.12.36.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:31 -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 0AKKaV4Y029295 for ; Fri, 20 Nov 2020 20:36:31 GMT Subject: [PATCH v2 031/118] NFSD: Add helper to decode OPEN's createhow4 argument From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:31 -0500 Message-ID: <160590459114.1340.3318665743129206416.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 78 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 1bbb637d4625..e8646f1e0b6a 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -893,6 +893,48 @@ nfsd4_decode_lookup(struct nfsd4_compoundargs *argp, struct nfsd4_lookup *lookup return nfsd4_decode_component4(argp, &lookup->lo_name, &lookup->lo_len); } +static __be32 +nfsd4_decode_createhow4(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) +{ + __be32 status; + + if (xdr_stream_decode_u32(argp->xdr, &open->op_createmode) < 0) + return nfserr_bad_xdr; + switch (open->op_createmode) { + case NFS4_CREATE_UNCHECKED: + case NFS4_CREATE_GUARDED: + status = nfsd4_decode_fattr4(argp, open->op_bmval, + ARRAY_SIZE(open->op_bmval), + &open->op_iattr, &open->op_acl, + &open->op_label, &open->op_umask); + if (status) + return status; + break; + case NFS4_CREATE_EXCLUSIVE: + status = nfsd4_decode_verifier4(argp, &open->op_verf); + if (status) + return status; + break; + case NFS4_CREATE_EXCLUSIVE4_1: + if (argp->minorversion < 1) + return nfserr_bad_xdr; + status = nfsd4_decode_verifier4(argp, &open->op_verf); + if (status) + return status; + status = nfsd4_decode_fattr4(argp, open->op_bmval, + ARRAY_SIZE(open->op_bmval), + &open->op_iattr, &open->op_acl, + &open->op_label, &open->op_umask); + if (status) + return status; + break; + default: + return nfserr_bad_xdr; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *share_access, u32 *deleg_want, u32 *deleg_when) { __be32 *p; @@ -993,39 +1035,9 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) case NFS4_OPEN_NOCREATE: break; case NFS4_OPEN_CREATE: - READ_BUF(4); - open->op_createmode = be32_to_cpup(p++); - switch (open->op_createmode) { - case NFS4_CREATE_UNCHECKED: - case NFS4_CREATE_GUARDED: - status = nfsd4_decode_fattr4(argp, open->op_bmval, - ARRAY_SIZE(open->op_bmval), - &open->op_iattr, &open->op_acl, - &open->op_label, &open->op_umask); - if (status) - goto out; - break; - case NFS4_CREATE_EXCLUSIVE: - status = nfsd4_decode_verifier4(argp, &open->op_verf); - if (status) - return status; - break; - case NFS4_CREATE_EXCLUSIVE4_1: - if (argp->minorversion < 1) - goto xdr_error; - status = nfsd4_decode_verifier4(argp, &open->op_verf); - if (status) - return status; - status = nfsd4_decode_fattr4(argp, open->op_bmval, - ARRAY_SIZE(open->op_bmval), - &open->op_iattr, &open->op_acl, - &open->op_label, &open->op_umask); - if (status) - goto out; - break; - default: - goto xdr_error; - } + status = nfsd4_decode_createhow4(argp, open); + if (status) + return status; break; default: goto xdr_error; From patchwork Fri Nov 20 20:36:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922355 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BEC83C6379F for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6194F2223F for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GVU2vNxc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731486AbgKTUgj (ORCPT ); Fri, 20 Nov 2020 15:36:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731074AbgKTUgj (ORCPT ); Fri, 20 Nov 2020 15:36:39 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ECFBBC0613CF for ; Fri, 20 Nov 2020 12:36:38 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id q22so10212052qkq.6 for ; Fri, 20 Nov 2020 12:36:38 -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=TKdLiWy1rsc4avKu1TeH1lCAs05UgXfb3Iyd5eYnPCk=; b=GVU2vNxcJQpU171VCD43iUB/EUTtmhS56VGapMygC0KP8PGIgDWcJmL/Lp2dnONwRD 5s3l8mvMpigEViSU6ZtR/ipCc5QE9GSzXpco86bUmej0Kpg7bXVGiKlg6rbPlq1hRnLq vtflkROJkQLQEQIUo/7nF4BK5hM8z21OhnyUL9rxDW/eQJMCwedo1LLsKudDJzqOWSXl 8gujalIJNYkHoVCO2aG1uPiRL4Ax3mSraDY2OHasWfwnvckXRdfKe789AfsOKg6TJ0pF qShbHa4qkuGFi0WJeJX3i+V3yLZoYT7PlLc0nBroHGGbA7+B+MGDLk52VhfLM78eTNkR 0V7g== 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=TKdLiWy1rsc4avKu1TeH1lCAs05UgXfb3Iyd5eYnPCk=; b=nJoKv5JoEW6H8WmMj/wk97SmUFCJBSmURowzDl+AvT6V8CfePU28nVMmGsNIyAvcPA HHNPIEGHXI5NgLKKhw3W4LYAJJMiSTUP3B1HDlQ/Y8x4czrxfwem2zPleD+cRu/OCQ8S oJhWhRXYAEIQ0nMmoZZLNh6W+W8D0a66iroj5xczAdYvD8NnwwMGcnS/M0XYF9/0jDCx RmfLrEsRIccrqCJokJn8j1UiqA0RmIXbMnUa2ouqL4wbq+Du8A7/3PX/kgK3au4tmYMU IHujl6JslXe3mEWnf4SNwqINoZarvH96YY5ZfHL9uhDECCMDyGGPzlZc1vQLkttwsN8M xNsw== X-Gm-Message-State: AOAM533th6zvqnF65r8KEe6lI+FruLHBet80AxLIqwlckMUaec6JSjuG pYWIajSvm+iYjWmVn4O0etq3akEXk6c= X-Google-Smtp-Source: ABdhPJzNEniEp11ub8bUsh8LkCw+TInP4gMNTtcPN754MKeOJay8kyvqvOtS6k38yodgivwvgPxagA== X-Received: by 2002:a37:a4c3:: with SMTP id n186mr17992720qke.495.1605904597909; Fri, 20 Nov 2020 12:36:37 -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 j13sm3087945qtc.81.2020.11.20.12.36.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:37 -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 0AKKaarX029298 for ; Fri, 20 Nov 2020 20:36:36 GMT Subject: [PATCH v2 032/118] NFSD: Add helper to decode OPEN's openflag4 argument From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:36 -0500 Message-ID: <160590459624.1340.697626830303772303.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index e8646f1e0b6a..608cb5e38c63 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -935,6 +935,28 @@ nfsd4_decode_createhow4(struct nfsd4_compoundargs *argp, struct nfsd4_open *open return nfs_ok; } +static __be32 +nfsd4_decode_openflag4(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) +{ + __be32 status; + + if (xdr_stream_decode_u32(argp->xdr, &open->op_create) < 0) + return nfserr_bad_xdr; + switch (open->op_create) { + case NFS4_OPEN_NOCREATE: + break; + case NFS4_OPEN_CREATE: + status = nfsd4_decode_createhow4(argp, open); + if (status) + return status; + break; + default: + return nfserr_bad_xdr; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *share_access, u32 *deleg_want, u32 *deleg_when) { __be32 *p; @@ -1029,19 +1051,9 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) status = nfsd4_decode_opaque(argp, &open->op_owner); if (status) goto xdr_error; - READ_BUF(4); - open->op_create = be32_to_cpup(p++); - switch (open->op_create) { - case NFS4_OPEN_NOCREATE: - break; - case NFS4_OPEN_CREATE: - status = nfsd4_decode_createhow4(argp, open); - if (status) - return status; - break; - default: - goto xdr_error; - } + status = nfsd4_decode_openflag4(argp, open); + if (status) + return status; /* open_claim */ READ_BUF(4); From patchwork Fri Nov 20 20:36:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922359 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EA29AC6379D for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9C019221EB for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L6lYxTx9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731364AbgKTUgp (ORCPT ); Fri, 20 Nov 2020 15:36:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731074AbgKTUgo (ORCPT ); Fri, 20 Nov 2020 15:36:44 -0500 Received: from mail-qv1-xf42.google.com (mail-qv1-xf42.google.com [IPv6:2607:f8b0:4864:20::f42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FF52C0613CF for ; Fri, 20 Nov 2020 12:36:44 -0800 (PST) Received: by mail-qv1-xf42.google.com with SMTP id 9so1116964qvk.9 for ; Fri, 20 Nov 2020 12:36:44 -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=yr3xQ+T1If5emyg1xG1E2WLncMDKxXULlHsiN1ikQfs=; b=L6lYxTx98tiVz/GZZkzpAhojRgF1qV4rFCrBMBR+JnNyDUIfPIJV5TXy2aCXLl29Zg WzcC9a8b/BLNjyWYTyO8nx6kWFDbB07q0VU58QXw0TkokvKu4Z8Bg4Zxo/mDR5k6o6kY fjtOrvYHFcSBApmutSPQ6UKpx156SS/Bd72pC34YRo0UscaVo9Ji8p1RnpY0SE9egXAB ea/FJ+g87C7DaA+lZtKOdWn4U+NVspcr8JtfrLEjJuGGZZjDHaCZLQCwnGT0IdLeyrG4 uOYpnjdvkg3Uzb3TPDORY2XT0xkOK/A3W8Qu3eMypEiT3oDoyCMNGfyX7zkRyFiufL2p 5zMQ== 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=yr3xQ+T1If5emyg1xG1E2WLncMDKxXULlHsiN1ikQfs=; b=le08KTegCQ2WRg+6dS8PzyQOkWWJCVAd6BTSn/tLA5mzO3/MooZkLeLq0iivbrZVM6 4sIL32GXxx9u209BgbK2IZpVQ47a0b3Ds92F2JNnictn/D/W/xGbpjubyRRRydwljPOL VZOMHwcGtfwAP9BEzJKO4RegZDCCVC78d0MlYguwxZb+/4d/weaMyZXNTPFk6YgApBD9 QvbHoHlLIRRdFbWA11C4sswRwD2pquALwYYBdTAjCjithtLiKJzgUdG/CE2s7m1f/I7/ toRUJ2c8CNlW6UoqDvqUuKae+73ap7srs82YRYuptnSEEoPBiWZNkEtfLPkJhuorGwjQ orUg== X-Gm-Message-State: AOAM5301JLbMVVYRqz9VF5j9dj3H23zBhkNwnawCSKHRhL6OoNxJpWmo EsNZuEx9Ik6MTPESOegkA/1z2O87gVA= X-Google-Smtp-Source: ABdhPJx3qjMHVXGk9NZ3YX9eZ41W+hrqF3R3Rfen7Vdr9LdFjkOfAPvrgc+edHrvoq0JY7IKBaYb/g== X-Received: by 2002:a0c:b664:: with SMTP id q36mr17651127qvf.6.1605904603261; Fri, 20 Nov 2020 12:36:43 -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 k188sm2786723qkd.98.2020.11.20.12.36.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:42 -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 0AKKaf9v029301 for ; Fri, 20 Nov 2020 20:36:41 GMT Subject: [PATCH v2 033/118] NFSD: Replace READ* macros in nfsd4_decode_share_access() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:41 -0500 Message-ID: <160590460156.1340.2852970917358844357.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 608cb5e38c63..29b7c096b5f8 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -959,11 +959,10 @@ nfsd4_decode_openflag4(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *share_access, u32 *deleg_want, u32 *deleg_when) { - __be32 *p; u32 w; - READ_BUF(4); - w = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &w) < 0) + return nfserr_bad_xdr; *share_access = w & NFS4_SHARE_ACCESS_MASK; *deleg_want = w & NFS4_SHARE_WANT_MASK; if (deleg_when) @@ -1006,7 +1005,6 @@ static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *sh NFS4_SHARE_PUSH_DELEG_WHEN_UNCONTENDED): return nfs_ok; } -xdr_error: return nfserr_bad_xdr; } From patchwork Fri Nov 20 20:36:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922361 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 163E8C64E69 for ; Fri, 20 Nov 2020 20:36:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CCFDE2223F for ; Fri, 20 Nov 2020 20:36:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VejUU/ta" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731489AbgKTUgu (ORCPT ); Fri, 20 Nov 2020 15:36:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731074AbgKTUgt (ORCPT ); Fri, 20 Nov 2020 15:36:49 -0500 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A15E1C0613CF for ; Fri, 20 Nov 2020 12:36:49 -0800 (PST) Received: by mail-qt1-x842.google.com with SMTP id e10so651616qte.4 for ; Fri, 20 Nov 2020 12:36:49 -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=KXeFpgcvO6CwX1so0/9qTbi31rwYEyXMaUIHvTcCOXw=; b=VejUU/taz5vzZAXl2H7pjo/qnqWsmZGRV0+XYNXlJ29QtOzF4Q2lDxzMn1ZlnJ/Gqt OwcHX1so5+zXELKu6dHElT9dSR2I+lsv3KGwJVhqyOwPIAkezmkGBzCU/Ve2agPU/zNq zJnwXiFspqaESbJhfufL9sLvtqjgugFV3qYlsfNIOCIPmYAFV4CshT7/H7gw5+2Hhrpa Kgc9Er/EUpUPCJWwm7hMDO33rG/qsuAk11k19beF4UlLdPbmQxFV9DYbJISXZzQ5a53V ou3Dlbh7A24ejHYdRKyt07FqLII0UMVN42lKBgTi70WmHAppC+ZBFGpBCfviI1UH2O/x U47g== 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=KXeFpgcvO6CwX1so0/9qTbi31rwYEyXMaUIHvTcCOXw=; b=qBBnZBwhiZwnV48d9i0wc5kV8Nc7Ey/l81c+/ydSDCF693HOhf+atX0dPzaurLsXb+ m+lydsnvXvC3ub6YLScFZ/BF6UDURofgbKJ/Da68ULPPs55ELsXQbE8FBOwrWFtym6kG h5GqFjRfW/OzGm1g27DK+2IhaG63l3is9jJ6zWskq+Tb2PuVaLP1rFWFanzqzuzy6r/k +7WkF5jRLVrqZkTz0P765nk9ScSJEke82N4oOyz4xHOpVZb+cTaumc5G5KrD7lpIDbG4 I0QNRKuIP09jWQGmIISKswjvQ+snMskjyJtXw9Ua7adTzL8tBGC1uWBEDFg93sTWoki+ EqmQ== X-Gm-Message-State: AOAM531UFqYEYXjY6ezNkBB+W4+7shja3smB58CnEQsooaujzfTmggl4 2ZsnJNLYMTT0NSO6WXvykoyEegGpQpo= X-Google-Smtp-Source: ABdhPJwE5epv0T1lm3EoQU1kYoMQuMZk6ePh1vB4A+fb65lzua0EyKgq/pRFHd6BAXPoVz2TsGMwVw== X-Received: by 2002:aed:2f81:: with SMTP id m1mr17486149qtd.209.1605904608560; Fri, 20 Nov 2020 12:36:48 -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 f189sm2692413qkb.84.2020.11.20.12.36.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:47 -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 0AKKakTo029304 for ; Fri, 20 Nov 2020 20:36:46 GMT Subject: [PATCH v2 034/118] NFSD: Replace READ* macros in nfsd4_decode_share_deny() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:46 -0500 Message-ID: <160590460688.1340.1410337139984545335.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 29b7c096b5f8..fa16bc32f3c9 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1010,16 +1010,13 @@ static __be32 nfsd4_decode_share_access(struct nfsd4_compoundargs *argp, u32 *sh static __be32 nfsd4_decode_share_deny(struct nfsd4_compoundargs *argp, u32 *x) { - __be32 *p; - - READ_BUF(4); - *x = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, x) < 0) + return nfserr_bad_xdr; /* Note: unlinke access bits, deny bits may be zero. */ if (*x & ~NFS4_SHARE_DENY_BOTH) return nfserr_bad_xdr; + return nfs_ok; -xdr_error: - return nfserr_bad_xdr; } static __be32 From patchwork Fri Nov 20 20:36:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922363 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83A21C2D0E4 for ; Fri, 20 Nov 2020 20:37:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 16659221EB for ; Fri, 20 Nov 2020 20:37:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BIsKybs0" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731490AbgKTUg5 (ORCPT ); Fri, 20 Nov 2020 15:36:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731074AbgKTUg4 (ORCPT ); Fri, 20 Nov 2020 15:36:56 -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 057D7C0613CF for ; Fri, 20 Nov 2020 12:36:55 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id u4so10181894qkk.10 for ; Fri, 20 Nov 2020 12:36:54 -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=t4gNRHBg7Hc7ZqKB984Us/qEFP1391mi1SFjBh6yYXQ=; b=BIsKybs0U+FtnSftwHtCHK1DswQkPKtxcJrEnJLURF1xfrLvZQWOCZVQGA3bVIexYo o3dV9jgz+Cp2xscwwULUZCk9mfT4Ec4PjOupeav6ogG7uctlqBI2QIpLhpqRvv6OE20x i7pItS2osZHf/dN5lGS+mpg4F94vSPoKcw+zZdGkngi8nffAMYcXCUg5ktXdAbIdjrWx k5AOD4JKlaXxrORQsSd+ndXRg1/Tg4F3K1nvF4a2wxvkLKgafP5hxvnJpMuBDpnnn+ex 0znYT8aPnli37GMMpfsAMRy3pEDUWJs3Cc2nHUCVSWxqFRpUH8EfTM4wjyrjiv8gb4cc 8oyw== 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=t4gNRHBg7Hc7ZqKB984Us/qEFP1391mi1SFjBh6yYXQ=; b=P7is5M/hBIE3J1ZId9bGtn5LGdKK0e7E+d0PtmHiAn3j9/X8PHWV1iS6dcAe06YnLE rF47TE8Q6SUde2bvTx42ddaxAF2maa8q/3eyQnX5u8UFQOCRV072Bjm/REppFtF5XWga fAxNhNlud7JadA6T9hkSiqv1bNsHXbi4+FDdy1P5//DPMoh/MGt5NRECxGH4ob5uPs1W VmE4OiIet5d9E/4eDju+YLnUL4SJvrPYrSvEVzKUcgw+7FotulsOUziIT1DJQDzO9wyX 1iKhcsg0MnfM7EZCreoBykWzQMa4ijbpPAFzqyiIbSsHHm9nk6uR4WI2WthGDdiW3Dwm tjNQ== X-Gm-Message-State: AOAM531u4K6Rhg84kvgSmQj7N2usZ+N5jdKPgqosWzMkACZhqaOKOc3/ SGnQwqO6wTPBmT+dz88t9RliVVSIgjE= X-Google-Smtp-Source: ABdhPJx20etkHzb5lNGQqxsBTmGyFiTAV7rrOWagOb5h5wmXY3k82WZmL7hLbQNokXi5L/npBRhTTw== X-Received: by 2002:a05:620a:22eb:: with SMTP id p11mr19539516qki.224.1605904613852; Fri, 20 Nov 2020 12:36:53 -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 k128sm1080414qkd.48.2020.11.20.12.36.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:53 -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 0AKKaqUZ029307 for ; Fri, 20 Nov 2020 20:36:52 GMT Subject: [PATCH v2 035/118] NFSD: Add helper to decode OPEN's open_claim4 argument From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:52 -0500 Message-ID: <160590461220.1340.5213833030984402582.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Note that op_fname is the only instance of an NFSv4 filename stored in a struct xdr_netobj. Convert it to a u32/char * pair so that the new nfsd4_decode_filename() helper can be used. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4proc.c | 8 ++-- fs/nfsd/nfs4xdr.c | 95 +++++++++++++++++++++++++++------------------------- fs/nfsd/xdr4.h | 3 +- 3 files changed, 56 insertions(+), 50 deletions(-) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index dc5c9fb1888b..07756483aa70 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -257,8 +257,8 @@ do_open_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, stru * in NFSv4 as in v3 except EXCLUSIVE4_1. */ current->fs->umask = open->op_umask; - status = do_nfsd_create(rqstp, current_fh, open->op_fname.data, - open->op_fname.len, &open->op_iattr, + status = do_nfsd_create(rqstp, current_fh, open->op_fname, + open->op_fnamelen, &open->op_iattr, *resfh, open->op_createmode, (u32 *)open->op_verf.data, &open->op_truncate, &open->op_created); @@ -283,7 +283,7 @@ do_open_lookup(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, stru * a chance to an acquire a delegation if appropriate. */ status = nfsd_lookup(rqstp, current_fh, - open->op_fname.data, open->op_fname.len, *resfh); + open->op_fname, open->op_fnamelen, *resfh); if (status) goto out; status = nfsd_check_obj_isreg(*resfh); @@ -360,7 +360,7 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, bool reclaim = false; dprintk("NFSD: nfsd4_open filename %.*s op_openowner %p\n", - (int)open->op_fname.len, open->op_fname.data, + (int)open->op_fnamelen, open->op_fname, open->op_openowner); /* This check required by spec. */ diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index fa16bc32f3c9..32929a1106a2 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1019,6 +1019,55 @@ static __be32 nfsd4_decode_share_deny(struct nfsd4_compoundargs *argp, u32 *x) return nfs_ok; } +static __be32 +nfsd4_decode_open_claim4(struct nfsd4_compoundargs *argp, + struct nfsd4_open *open) +{ + __be32 status; + + if (xdr_stream_decode_u32(argp->xdr, &open->op_claim_type) < 0) + return nfserr_bad_xdr; + switch (open->op_claim_type) { + case NFS4_OPEN_CLAIM_NULL: + case NFS4_OPEN_CLAIM_DELEGATE_PREV: + status = nfsd4_decode_component4(argp, &open->op_fname, + &open->op_fnamelen); + if (status) + return status; + break; + case NFS4_OPEN_CLAIM_PREVIOUS: + if (xdr_stream_decode_u32(argp->xdr, &open->op_delegate_type) < 0) + return nfserr_bad_xdr; + break; + case NFS4_OPEN_CLAIM_DELEGATE_CUR: + status = nfsd4_decode_stateid4(argp, &open->op_delegate_stateid); + if (status) + return status; + status = nfsd4_decode_component4(argp, &open->op_fname, + &open->op_fnamelen); + if (status) + return status; + break; + case NFS4_OPEN_CLAIM_FH: + case NFS4_OPEN_CLAIM_DELEG_PREV_FH: + if (argp->minorversion < 1) + return nfserr_bad_xdr; + /* void */ + break; + case NFS4_OPEN_CLAIM_DELEG_CUR_FH: + if (argp->minorversion < 1) + return nfserr_bad_xdr; + status = nfsd4_decode_stateid4(argp, &open->op_delegate_stateid); + if (status) + return status; + break; + default: + return nfserr_bad_xdr; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) { @@ -1049,51 +1098,7 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) status = nfsd4_decode_openflag4(argp, open); if (status) return status; - - /* open_claim */ - READ_BUF(4); - open->op_claim_type = be32_to_cpup(p++); - switch (open->op_claim_type) { - case NFS4_OPEN_CLAIM_NULL: - case NFS4_OPEN_CLAIM_DELEGATE_PREV: - READ_BUF(4); - open->op_fname.len = be32_to_cpup(p++); - READ_BUF(open->op_fname.len); - SAVEMEM(open->op_fname.data, open->op_fname.len); - if ((status = check_filename(open->op_fname.data, open->op_fname.len))) - return status; - break; - case NFS4_OPEN_CLAIM_PREVIOUS: - READ_BUF(4); - open->op_delegate_type = be32_to_cpup(p++); - break; - case NFS4_OPEN_CLAIM_DELEGATE_CUR: - status = nfsd4_decode_stateid4(argp, &open->op_delegate_stateid); - if (status) - return status; - READ_BUF(4); - open->op_fname.len = be32_to_cpup(p++); - READ_BUF(open->op_fname.len); - SAVEMEM(open->op_fname.data, open->op_fname.len); - if ((status = check_filename(open->op_fname.data, open->op_fname.len))) - return status; - break; - case NFS4_OPEN_CLAIM_FH: - case NFS4_OPEN_CLAIM_DELEG_PREV_FH: - if (argp->minorversion < 1) - goto xdr_error; - /* void */ - break; - case NFS4_OPEN_CLAIM_DELEG_CUR_FH: - if (argp->minorversion < 1) - goto xdr_error; - status = nfsd4_decode_stateid4(argp, &open->op_delegate_stateid); - if (status) - return status; - break; - default: - goto xdr_error; - } + status = nfsd4_decode_open_claim4(argp, open); DECODE_TAIL; } diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 0eb13bd603ea..6245004a9993 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -252,7 +252,8 @@ struct nfsd4_listxattrs { struct nfsd4_open { u32 op_claim_type; /* request */ - struct xdr_netobj op_fname; /* request - everything but CLAIM_PREV */ + u32 op_fnamelen; + char * op_fname; /* request - everything but CLAIM_PREV */ u32 op_delegate_type; /* request - CLAIM_PREV only */ stateid_t op_delegate_stateid; /* request - response */ u32 op_why_no_deleg; /* response - DELEG_NONE_EXT only */ From patchwork Fri Nov 20 20:36:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922367 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8C92C63777 for ; Fri, 20 Nov 2020 20:37:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5C9342223F for ; Fri, 20 Nov 2020 20:37:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PJnZwuwY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731492AbgKTUhA (ORCPT ); Fri, 20 Nov 2020 15:37:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32908 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731074AbgKTUhA (ORCPT ); Fri, 20 Nov 2020 15:37:00 -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 50CDDC0613CF for ; Fri, 20 Nov 2020 12:37:00 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id 11so10214675qkd.5 for ; Fri, 20 Nov 2020 12:37:00 -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=oJXRxUG0qmK8loJ5U8+JVkEXskPWALN1NdUFRBB9cBk=; b=PJnZwuwYy7mWd7y/vgUA/mYGZOrlBvs5XIKzwdkH0fq2WgIwOV4PQ9FFm1YygRqzTS 67GKBbP87YaRBdZW/WVaFnQX7h+cH/VKuMm65M8NFnlacQJ2pAeiFkBGjCefQfY035mE eR5Lh7Qt24RfubMFT0F+JmlPv7tSVueeNV7dIJIxpNRRZQGZdcqsaXGBlbIa7cRp6pTP NJXGpQsjm4k3D76wHytSqYNj2iUuNFv4Sufx+CGACeum1yZ6/eWR1shJxLJYJylNpc7w UjEWelCIA0iHf45rd/sriRmXJlsBgMarKkgB/vnXfKNDVKFBlxTVx0rSIK7FK30XAodp 9PPA== 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=oJXRxUG0qmK8loJ5U8+JVkEXskPWALN1NdUFRBB9cBk=; b=JEJy8XHtOc1GKoWlCigXc/qTJIAgoRNDx0ZBDVRUDmtvcdEE/u40Tz0joNXzHceFZ9 i9SY7EScoPN9szjpXMBRO+d0UHisS7zecSzZfsB/BzHAKgryUylMdfxXDnoCeW+msBgm nnTzPsz/3bskICjD+sPlYNs3UFOnaZiFbL2OISu+fjyTDaz48rB3haGdIHYHILjCVoHc EM59uf11W0T/uY3t8RELpUSrY2MABQ8L1TEPXNS+pTcgCnJo96kDDOO4fB0QUgS7I17H 3wTARKHUnrRNguW+iIrGkVzigE0AIrPF8OATAl2tg1yvw4eIhAIZXtRZ0sJi4cS3wNfY R9+Q== X-Gm-Message-State: AOAM531jNSB4uq++wkmQtwPQ8lNgnkvLlCcIORhzXyF89pHYT3x2cMD9 /xHsVl6J3d/5R+IatppEpamgJ4WwdzE= X-Google-Smtp-Source: ABdhPJzPB58aJkCVTc64OPYljgnJu7krK2XwrL1Du/4ZTitOF3g0rdMjefKn/Fn7XrKC44GuqBi6JA== X-Received: by 2002:a05:620a:f84:: with SMTP id b4mr18101900qkn.22.1605904619240; Fri, 20 Nov 2020 12:36:59 -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 u31sm2871876qtu.87.2020.11.20.12.36.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:36:58 -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 0AKKavGJ029310 for ; Fri, 20 Nov 2020 20:36:57 GMT Subject: [PATCH v2 036/118] NFSD: Replace READ* macros in nfsd4_decode_open() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:36:57 -0500 Message-ID: <160590461752.1340.15397108103776849920.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 32929a1106a2..f6fb167c7715 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1071,7 +1071,7 @@ nfsd4_decode_open_claim4(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) { - DECODE_HEAD; + __be32 status; u32 dummy; memset(open->op_bmval, 0, sizeof(open->op_bmval)); @@ -1079,28 +1079,24 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) open->op_openowner = NULL; open->op_xdr_error = 0; - /* seqid, share_access, share_deny, clientid, ownerlen */ - READ_BUF(4); - open->op_seqid = be32_to_cpup(p++); - /* decode, yet ignore deleg_when until supported */ + if (xdr_stream_decode_u32(argp->xdr, &open->op_seqid) < 0) + return nfserr_bad_xdr; + /* decode, yet ignore deleg_want until supported */ status = nfsd4_decode_share_access(argp, &open->op_share_access, &open->op_deleg_want, &dummy); if (status) - goto xdr_error; + return status; status = nfsd4_decode_share_deny(argp, &open->op_share_deny); if (status) - goto xdr_error; - READ_BUF(sizeof(clientid_t)); - COPYMEM(&open->op_clientid, sizeof(clientid_t)); - status = nfsd4_decode_opaque(argp, &open->op_owner); + return status; + status = nfsd4_decode_state_owner4(argp, &open->op_clientid, + &open->op_owner); if (status) - goto xdr_error; + return status; status = nfsd4_decode_openflag4(argp, open); if (status) return status; - status = nfsd4_decode_open_claim4(argp, open); - - DECODE_TAIL; + return nfsd4_decode_open_claim4(argp, open); } static __be32 From patchwork Fri Nov 20 20:37:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922365 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04351C2D0E4 for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A26AD221EB for ; Fri, 20 Nov 2020 20:37:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FMLdawGJ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731497AbgKTUhG (ORCPT ); Fri, 20 Nov 2020 15:37:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731074AbgKTUhF (ORCPT ); Fri, 20 Nov 2020 15:37:05 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60DECC0613CF for ; Fri, 20 Nov 2020 12:37:05 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id u4so10182339qkk.10 for ; Fri, 20 Nov 2020 12:37:05 -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=cCwZMcRVLNCZUbfO1LP00KapJf3rsrCBDtrD1UCtcyQ=; b=FMLdawGJ1lgjsGc9K9yX8uOdkJv49iRWGZvbgIwr9O5hKQEtYwt3W3n2P9MCig0aCl PoK4XaZbF2Y2QNWxKwDWoWf4uP5o+BMnfjZf7lB7fpOk8Pp1+O4XjuBPMLfCEEefCIye O7ffZ6Ievfw9/LpZQe0O2DIz8RI9Ug9wj5p/dwnQ6Wm7ymRyNs67l8vwsjGoxJyosUNs a/Tfz8aEbh/OmsjdEdnO+UT0FT1304U2nqJTZR4xBCFZ86zWZBVHxC9NvCj7SWu1skpM DvLnUKLKv9PH4GOzb5pp1NNclF2FHHJLEvGgHTgUI2m8rsmQtn+ODkfXVb/MgwKxY2Gt b/1Q== 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=cCwZMcRVLNCZUbfO1LP00KapJf3rsrCBDtrD1UCtcyQ=; b=ntf1Yeze+uZY+ewU7HtRNjRni+GjawoepqjZOzXAevLErwkvAZJBqsimnCoE2/0nE3 b0IpnfkaFr6b3yaecbuvSz5qCd9c1z875pmECLVgIQB/aIQ8yhu3hWSKifV/dEABOxzJ VadNQT0Uictn8dkrbuGwKtFyb4UqyTcWlLp+6AAPBJxUSws+wahU4w2QpcNJQYUbxG12 oD31XuYokCkJCU2R8AGpeZQL9hZwqisxUwoDbwGJicHmkLgPKfD/oJdtuxGpypo5nFxm HK5PyDaqyxmicZpcFKUpruvUKPbnBNVasLbGFqj13I5kZ7nXSe03c5RmMDs4GQ6azvGt VX3g== X-Gm-Message-State: AOAM5311CdnY8eS/DSfglWuz225x8zXn7J9+WVcVM2Js+NdL3SGA87Iw jNJPocgl9ZkoqLxMUMnkdpc5nG8mFOc= X-Google-Smtp-Source: ABdhPJxWS/mpRXVjcNke3ZlXclcU7Fau8wcE1wWBQKP3YsbUqV8xep3qQVcNGEzcL14PzO/HC6wDrQ== X-Received: by 2002:a05:620a:11a4:: with SMTP id c4mr19013719qkk.8.1605904624316; Fri, 20 Nov 2020 12:37:04 -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 i4sm2688386qtw.22.2020.11.20.12.37.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:03 -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 0AKKb2jU029313 for ; Fri, 20 Nov 2020 20:37:02 GMT Subject: [PATCH v2 037/118] NFSD: Replace READ* macros in nfsd4_decode_open_confirm() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:02 -0500 Message-ID: <160590462284.1340.4278129418229040413.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index f6fb167c7715..ad3f392de382 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1102,7 +1102,7 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open) static __be32 nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_confirm *open_conf) { - DECODE_HEAD; + __be32 status; if (argp->minorversion >= 1) return nfserr_notsupp; @@ -1110,10 +1110,10 @@ nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_con status = nfsd4_decode_stateid4(argp, &open_conf->oc_req_stateid); if (status) return status; - READ_BUF(4); - open_conf->oc_seqid = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &open_conf->oc_seqid) < 0) + return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:37:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922375 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4218CC63798 for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E0CB72223F for ; Fri, 20 Nov 2020 20:37:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OFB7lYBV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731074AbgKTUhM (ORCPT ); Fri, 20 Nov 2020 15:37:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32938 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729245AbgKTUhM (ORCPT ); Fri, 20 Nov 2020 15:37:12 -0500 Received: from mail-qv1-xf43.google.com (mail-qv1-xf43.google.com [IPv6:2607:f8b0:4864:20::f43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B45F0C0613CF for ; Fri, 20 Nov 2020 12:37:10 -0800 (PST) Received: by mail-qv1-xf43.google.com with SMTP id q7so5286965qvt.12 for ; Fri, 20 Nov 2020 12:37:10 -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=mZ2D2E5bsx6w6oiDBSBCBu9VySnYX5U7grH9GcNeQzc=; b=OFB7lYBV9owt+oqIqjH1jYY0Hsy/bRkudyKvy35yAWEe+Rje4K62R83U8Lcqjc85H6 LfVGK5XD+zjlXcXF/tzaTCSLAn/41X3ueFKUWSmIohmzgjFj4MtsAyuHbue2EBW+yKN7 EDd/x9oC/yHLoCdHNnsS6mvKIrwSTKu5YpYyGihbomUNgZ4L46ETcc6YPDrmmilhebvW OFKs4ZeJJDyWt1Yy4ZD4sN5FMkG0VdGjYYDEHY4dB87bAECQGw27vw3/Gt7sCbnxIPde CxocPDJp7+TQSU+HKGQDyXew3b/KOB+m8WBrGBIM1rZPX7ldLkOcDBOiuqE7DCYM1y/+ q2Cg== 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=mZ2D2E5bsx6w6oiDBSBCBu9VySnYX5U7grH9GcNeQzc=; b=ZS+CZdKOVB+M7aIKXUJap75tU/isi0hLWqenPgkTprMYZRhYSiO8Hl4rAaVeIozw+P JjSJqehHKMxAQMDJXGAgiof9HbmIuPLCcIZiM7lQVAtDx/8JzFGbtszycLg05lDDCc4Q yw0JDqXLtaiHm2Pw5NOmE5UgZKJO+1v2FlBjR3UhSQ5M1mPJje2+BSPqvCoWOm76vmUX frJZ03XsfU5Z8yvuZ88Ns34RkyNN/iFuBUiZxrW4mjuBWaFHX+UtwzERGQfmuB3dZl8d Su+vuIrb6K6QBuvSDTW9tkukN3PwfkXSYqzB+w3pojtBslONeDSgDMoYYU0vCJkUgloj 2t2A== X-Gm-Message-State: AOAM531qmRFm9WwcL1pCiZHcD/L9Yeixfi61QoDPHyeJ2F+ShPge396o MLpsqTxB0+CTkcu7pmpF8jbfTzX+63w= X-Google-Smtp-Source: ABdhPJwxAq29EwCDSB9m21d53iYUIVFZXvAvyO0DvSZ6k6fMCZWCpbr1CYsazvIHoNIE4HD51zk9/w== X-Received: by 2002:a0c:a544:: with SMTP id y62mr18676854qvy.11.1605904629671; Fri, 20 Nov 2020 12:37:09 -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 q20sm2718399qke.0.2020.11.20.12.37.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:09 -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 0AKKb7Ml029316 for ; Fri, 20 Nov 2020 20:37:07 GMT Subject: [PATCH v2 038/118] NFSD: Replace READ* macros in nfsd4_decode_open_downgrade() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:07 -0500 Message-ID: <160590462795.1340.9636735539087512954.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index ad3f392de382..fdc6ba702132 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1119,21 +1119,18 @@ nfsd4_decode_open_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_open_con static __be32 nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_downgrade *open_down) { - DECODE_HEAD; - + __be32 status; + status = nfsd4_decode_stateid4(argp, &open_down->od_stateid); if (status) return status; - READ_BUF(4); - open_down->od_seqid = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &open_down->od_seqid) < 0) + return nfserr_bad_xdr; status = nfsd4_decode_share_access(argp, &open_down->od_share_access, &open_down->od_deleg_want, NULL); if (status) return status; - status = nfsd4_decode_share_deny(argp, &open_down->od_share_deny); - if (status) - return status; - DECODE_TAIL; + return nfsd4_decode_share_deny(argp, &open_down->od_share_deny); } static __be32 From patchwork Fri Nov 20 20:37:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922369 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88551C56202 for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2CE31221EB for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kyQ1L2Cf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731128AbgKTUhQ (ORCPT ); Fri, 20 Nov 2020 15:37:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729245AbgKTUhQ (ORCPT ); Fri, 20 Nov 2020 15:37:16 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FDA6C0613CF for ; Fri, 20 Nov 2020 12:37:16 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id a13so10235036qkl.4 for ; Fri, 20 Nov 2020 12:37:16 -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=kKlFrNj26iWOwNXxO4zNteTIOXxE8vsJlSRRXw0plhg=; b=kyQ1L2CfJkWVHUM9oiVs5ryhBWHXEszBXrPeVo/aZkvWxODzP503HPiWc05x65ot1W 31uuaXt6FQDUPDkVkNc1a1YIUFUo47QQ30vB3i7dlMIlrKUHVwPdzpqQx7k9d9G+Wn2I Ham2q+aDqv3I05HLyE2lrJjIII54l+4dJaMt70VzNkqJtRRazJeLtvGQO7SSiBqxSMLw N7+x9q/Vp7lNmFcM4jFn7fCwCyJVjqat/D86r7u5wSbrAk1fWJtrh+SzJnH3OYvLCy8u WTKSSuc8yNyPwZjzmZ7p5xY4ZUsPUegYF7DJHu72LV1bFkJ48SuRZ0EM89gtAQDOj2NX 5+0A== 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=kKlFrNj26iWOwNXxO4zNteTIOXxE8vsJlSRRXw0plhg=; b=GiCpbszBqz2ohsxb1TqXY/gicawtwq0xHfTo13UzeoUhl7bp79ec9uxXUrmIZbz2ao 5AcVNs+IDFEkXGhshbvx9hS09w4Z1gbADbrTN01GHFSPKcFZfxHAJ+L/zW5anzKxZjB5 XqflwbsTh1yn6GPNCvfSALfgfau5UfJ4Y3HYpAd/BwWmiQS8DFI/jCYDLBr5zcLjIgvl +Um/S124hMF5iZ+UWAZWxlvuHvQkc94qYiC+yYbHzvu4dGmY9u/JPl5NgNtAWTloF4ck ricptv0TiJdkkF7eNFDqUp4rn7xdyUP2Q6hKPXVBwdd8yCqOnPbxS7FEeKze8Z2vxmDT LhXw== X-Gm-Message-State: AOAM530krEG4ibYXb5piUVzs8k7cPFkFfocf7GR5ZimwzlWagquO0iEo 09y7xhuAM3ZRjDRbhn+cj8i3G0uCNlg= X-Google-Smtp-Source: ABdhPJx8X63Eaq3rkNetooDW+3YYBBfi5JQaZZGbISgPtxAp4EBiO7+4hRrDTyZ5mN4/yEX+ccd+rw== X-Received: by 2002:a05:620a:4c8:: with SMTP id 8mr17935517qks.182.1605904635062; Fri, 20 Nov 2020 12:37:15 -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 e10sm2736244qkn.126.2020.11.20.12.37.14 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:14 -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 0AKKbDFp029319 for ; Fri, 20 Nov 2020 20:37:13 GMT Subject: [PATCH v2 039/118] NFSD: Replace READ* macros in nfsd4_decode_putfh() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:13 -0500 Message-ID: <160590463328.1340.7042515486859858087.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index fdc6ba702132..1f06101a3b36 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1136,16 +1136,21 @@ nfsd4_decode_open_downgrade(struct nfsd4_compoundargs *argp, struct nfsd4_open_d static __be32 nfsd4_decode_putfh(struct nfsd4_compoundargs *argp, struct nfsd4_putfh *putfh) { - DECODE_HEAD; + __be32 *p; - READ_BUF(4); - putfh->pf_fhlen = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &putfh->pf_fhlen) < 0) + return nfserr_bad_xdr; if (putfh->pf_fhlen > NFS4_FHSIZE) - goto xdr_error; - READ_BUF(putfh->pf_fhlen); - SAVEMEM(putfh->pf_fhval, putfh->pf_fhlen); + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, putfh->pf_fhlen); + if (!p) + return nfserr_bad_xdr; + putfh->pf_fhval = svcxdr_tmpalloc(argp, putfh->pf_fhlen); + if (!putfh->pf_fhval) + return nfserr_jukebox; + memcpy(putfh->pf_fhval, p, putfh->pf_fhlen); - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:37:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922371 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BE877C6379D for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6B7632223F for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JSdW+diZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730984AbgKTUhW (ORCPT ); Fri, 20 Nov 2020 15:37:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730603AbgKTUhV (ORCPT ); Fri, 20 Nov 2020 15:37:21 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 707DEC0613CF for ; Fri, 20 Nov 2020 12:37:21 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id m65so8073143qte.11 for ; Fri, 20 Nov 2020 12:37:21 -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=GPhmJsGKzDUodUdVm/UjifD+Jhuy6o1walNgIr5fpcE=; b=JSdW+diZ/rhKLLJKcKdrHjj7CHP4CPWYqunoTGUPd7cK52dEKRxgpA/TGQkaasOE1o x4UKZiXt5FbWlMZvmOVXtk6QbNk4HvXQKICVISblDFyujDBUpWJf8SJHiOQ8gkkkP/qS HPh9wdZ7NotwyzKTh4qwS0ud/ugpE2RkaOml34CJKz94JhHbv8cbV6jrKyXsjUrJ4ZcK jyaxXiMUa8uvIHh9qrd2KOHhQq1L+ppovHMT+tlqREuvYxL77YahZOZN1CkYKuu5gjai GBtlbK2rt7E19fRBRJZ7BPftTo4a/tGAqSHVcWWdO2T57tm8i7CRB+DIXBy7Z5xor8sy BDzw== 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=GPhmJsGKzDUodUdVm/UjifD+Jhuy6o1walNgIr5fpcE=; b=hbQ0DR5MuOcIVz/K9Ff6BdZCt6fmqC179JXMXogvZyNwKjHjiaGUKr1f2UKtuTv92R RPIv/1eOz6c+UPTzW8Ksi+0gqT5L/PsxQ2NI7e+ZovPcnlTzrHNHTxu1QfxC42H3m/E1 9djG6YSRTUEs4K/u4RqWj7TsenTESLRzQW6CjTGiQ3k28R9HADh7FbC7Su9xDV9d6vEz oAAUcmkZRuyxDq+C07UMFB5k3ROmcHSCaY/qDH58porfJiFwPdKRJqi7812l2NnzQvcQ jE0TDY3yVYdLMBMc1m2ZrI1+LWcqLTv/jPqssLR+P+Y5LZqum3dGTohQ1hJH56dRgARE Gnwg== X-Gm-Message-State: AOAM532MggAyYtD/XNZZ5ZtCb5ntbH7UIq++z9nVkSgMLO0AUX7ZMjNQ XAJ3gjvHx9O8adENWGXhK+02mQ0le+k= X-Google-Smtp-Source: ABdhPJx/mJTuSKFZ2defYkYC0oBEXmRpWWJ68GBxk3SC2oTi7AcjtRrIyFwdrf739Kxfy9hhRcyHOg== X-Received: by 2002:ac8:5a04:: with SMTP id n4mr17696931qta.21.1605904640431; Fri, 20 Nov 2020 12:37:20 -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 n93sm2778505qtd.7.2020.11.20.12.37.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:19 -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 0AKKbIAY029322 for ; Fri, 20 Nov 2020 20:37:18 GMT Subject: [PATCH v2 040/118] NFSD: Replace READ* macros in nfsd4_decode_read() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:18 -0500 Message-ID: <160590463866.1340.12761184072054399647.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 1f06101a3b36..ecc922cd5d29 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1164,16 +1164,17 @@ nfsd4_decode_putpubfh(struct nfsd4_compoundargs *argp, void *p) static __be32 nfsd4_decode_read(struct nfsd4_compoundargs *argp, struct nfsd4_read *read) { - DECODE_HEAD; + __be32 status; status = nfsd4_decode_stateid4(argp, &read->rd_stateid); if (status) return status; - READ_BUF(12); - p = xdr_decode_hyper(p, &read->rd_offset); - read->rd_length = be32_to_cpup(p++); + if (xdr_stream_decode_u64(argp->xdr, &read->rd_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &read->rd_length) < 0) + return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:37:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922373 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5418EC64E69 for ; Fri, 20 Nov 2020 20:37:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EAD8D221EB for ; Fri, 20 Nov 2020 20:37:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jboGwWzz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731332AbgKTUh1 (ORCPT ); Fri, 20 Nov 2020 15:37:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731284AbgKTUh1 (ORCPT ); Fri, 20 Nov 2020 15:37:27 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F02B1C0613CF for ; Fri, 20 Nov 2020 12:37:26 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id e10so652998qte.4 for ; Fri, 20 Nov 2020 12:37:26 -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=WtXGxSYABNe5RS+FSzALJn3Qx1xwkenkkx4T2G1fPAI=; b=jboGwWzz33IQuh71CyjLEz01+DVYF20YDhq7ac3WgU23SaYyCpM7dxgBFekTWKUdN5 +oWlfAYFnyWX3E3E5Pc0u3acBhQ2lzlwTEDDCHJiWnhCH3SgpT+wox2MWnplAWimKDvR Fi6xreoNcHJNWnrzIvR6T86X8bYLTDy8ftkao/eEcICYPKxLdNh/XyN9M/UCnMM3G/KQ jHgkZOrRgL7QSNtwpurz+B0egQRMq/I9w9SErh6i5wHIaanoEhgdpZSsCvm6xaUimruP iXmZOuHpLVUqQTl+VYoLUVO7oUdecrbq3ywbUkibjCdXW23wiwSUxsNBZRB2ScdoRzna RY3Q== 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=WtXGxSYABNe5RS+FSzALJn3Qx1xwkenkkx4T2G1fPAI=; b=DJ6+GDAEIc0dAT8AWf3ZyAcIsXJrv2uXPpNNg9hI4X4BeEsSF673r8B4xGy3KSkoZe hbWWvxAmXtMFkUSCVNl/rhta8RDVH1p1iLZJDqFWDcPNfSr59JsHNDVaG3nQJLFoLxR3 8NYd11nLPj1uWhH4p3kkGKBBN72LxbBTiBQYeA01XI3bQEypY6ZZWzOsjl95sGEIGpZc vVCBCAdNfnbMVYWkhOniYiO+uGupLtZLfaHsVs5F1MtwwRpM4D8UiufEN8z0CALMuhI3 gNKnSLsfJBRT7E69K3JFTMJn35qoVyvdoSok8LaZCnjv6kBWwAjs68enzSdQobrGSoEK zq5A== X-Gm-Message-State: AOAM531d4/ox6AZPBSR/C/OLfpk7Tk42hylS4qdMEUdDiHFZVyJ/VG0d aKgIYTruTjr2u8LT5PFxJhMLocuI3a4= X-Google-Smtp-Source: ABdhPJzcr1hFqm2RON9lMQ2TuoRnIkyf29ozNl0fduSTc8FTgqXaiYm/lRRgSOQzyUNQMF3ZJN4cPw== X-Received: by 2002:a05:622a:d4:: with SMTP id p20mr17827368qtw.172.1605904645939; Fri, 20 Nov 2020 12:37:25 -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 7sm2838526qko.106.2020.11.20.12.37.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:25 -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 0AKKbO6R029325 for ; Fri, 20 Nov 2020 20:37:24 GMT Subject: [PATCH v2 041/118] NFSD: Replace READ* macros in nfsd4_decode_readdir() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:24 -0500 Message-ID: <160590464406.1340.17161947753688573465.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index ecc922cd5d29..3a7b615aef62 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1180,17 +1180,22 @@ nfsd4_decode_read(struct nfsd4_compoundargs *argp, struct nfsd4_read *read) static __be32 nfsd4_decode_readdir(struct nfsd4_compoundargs *argp, struct nfsd4_readdir *readdir) { - DECODE_HEAD; + __be32 status; - READ_BUF(24); - p = xdr_decode_hyper(p, &readdir->rd_cookie); - COPYMEM(readdir->rd_verf.data, sizeof(readdir->rd_verf.data)); - readdir->rd_dircount = be32_to_cpup(p++); - readdir->rd_maxcount = be32_to_cpup(p++); - if ((status = nfsd4_decode_bitmap(argp, readdir->rd_bmval))) - goto out; + if (xdr_stream_decode_u64(argp->xdr, &readdir->rd_cookie) < 0) + return nfserr_bad_xdr; + status = nfsd4_decode_verifier4(argp, &readdir->rd_verf); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &readdir->rd_dircount) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &readdir->rd_maxcount) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_uint32_array(argp->xdr, readdir->rd_bmval, + ARRAY_SIZE(readdir->rd_bmval)) < 0) + return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:37:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922377 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A97ECC2D0E4 for ; Fri, 20 Nov 2020 20:37:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4F5D5221EB for ; Fri, 20 Nov 2020 20:37:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M+5TmV35" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731500AbgKTUhc (ORCPT ); Fri, 20 Nov 2020 15:37:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731087AbgKTUhc (ORCPT ); Fri, 20 Nov 2020 15:37:32 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 496F1C0613CF for ; Fri, 20 Nov 2020 12:37:32 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id n132so10244838qke.1 for ; Fri, 20 Nov 2020 12:37:32 -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=bINWdid4826TqRTJcejOeR/TT+q5ab2GJmDQQsXOwCI=; b=M+5TmV35qydJlerfoONb3SWOSedrydW5TzXVBPPXSk0bHDfvSnuhEuAaDUAWM6Ar9m MPl32v56hTpqFpn75bSlIw+dvQDFj5gyDU0cLxnP9Hy/SM/rBYZrlNYaLbjE5KSqUyU6 ShIFGipgKtCTJ2wiizExI5psALXR67OrrCFPs9E4C5MDjrlCyPatvptmZnRWSI/HC1ub d/TsTjSXVrMAs1D+LVxPmdLRXwvIYwNww3vopKPmBI6rLVFQM3mIq36LzIXWD381ICW4 WDHKxujt8yEnewfs0ZfcY/iJ2uxjyI/3kZBehqxd4OwcS7yZonmqlOBmfD0LbzGTodTD qlSg== 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=bINWdid4826TqRTJcejOeR/TT+q5ab2GJmDQQsXOwCI=; b=RzYCg/en6wnSQk6X7FCx9NFJuJd7tMH8MoRoam+kjEoaGI2DkLqOE+6n29lij2BS5M /4sahx0eYrCdC4QEiQ6GZHSaknnd2/nA4dMizoTojN8QRJAAtIRDr8mVmTZdGUfvTJSJ NQ0rdeLZ//v/Lswryn01H0o/LyEm4VdrvkmRoLWcQvdjpS28+uwOEIdPIajT2kZzGP3Z R2eerCFWLvcuePV7fgHGOczd4+HSVXLSiaUkEQUqhz3CBpielIOix0dxQOII6AYz5BX4 x0grqAX6evPY0vZ3MTRopinepi7PS+2HP/LjzIwZJye8OZyr/lcMOjvcQ5vQd0RpE1er LrKg== X-Gm-Message-State: AOAM532hx1zsZBDvjsA5MgfbgUFcDx4wwjxH6CSwvuL5Zbn6FMGFVanZ SN0jR95UqaLoBfBviB5CQbVUN4D7kZU= X-Google-Smtp-Source: ABdhPJxSZsJc/3hf20iaNqIZyQVrEbDLR6561YqfEl2FLGADuwWIV2vmjhhKn+KgE2/GTfbqmew5yQ== X-Received: by 2002:a05:620a:22eb:: with SMTP id p11mr19542337qki.224.1605904651262; Fri, 20 Nov 2020 12:37:31 -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 k4sm2740260qki.2.2020.11.20.12.37.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:30 -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 0AKKbTN3029328 for ; Fri, 20 Nov 2020 20:37:29 GMT Subject: [PATCH v2 042/118] NFSD: Replace READ* macros in nfsd4_decode_remove() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:29 -0500 Message-ID: <160590464945.1340.2353090260642464897.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 3a7b615aef62..964cfe3d9409 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1201,16 +1201,7 @@ nfsd4_decode_readdir(struct nfsd4_compoundargs *argp, struct nfsd4_readdir *read static __be32 nfsd4_decode_remove(struct nfsd4_compoundargs *argp, struct nfsd4_remove *remove) { - DECODE_HEAD; - - READ_BUF(4); - remove->rm_namelen = be32_to_cpup(p++); - READ_BUF(remove->rm_namelen); - SAVEMEM(remove->rm_name, remove->rm_namelen); - if ((status = check_filename(remove->rm_name, remove->rm_namelen))) - return status; - - DECODE_TAIL; + return nfsd4_decode_component4(argp, &remove->rm_name, &remove->rm_namelen); } static __be32 From patchwork Fri Nov 20 20:37:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922383 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ED63DC63798 for ; Fri, 20 Nov 2020 20:38:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8A51B221F1 for ; Fri, 20 Nov 2020 20:38:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jR3CI/Gy" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731358AbgKTUhi (ORCPT ); Fri, 20 Nov 2020 15:37:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731345AbgKTUhh (ORCPT ); Fri, 20 Nov 2020 15:37:37 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A64A5C0613CF for ; Fri, 20 Nov 2020 12:37:37 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id u4so10183794qkk.10 for ; Fri, 20 Nov 2020 12:37:37 -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=GI76cyr4oe7xQm7VhTwMq1ywtSac9z6BYM24bW5aHVo=; b=jR3CI/GyYWzdpN+0LzS0g4upLGcTbCqOPQpVGfmrz/oT4yIWQ888lFsYqA1GSowxR0 0+X4nJCezbNSi1h6n3IIjc2WmiCVxc5q8D2dLs/7lhEHNhlEaJSliwFWfGPZIcMcgANF W3cB4SVB8Sw/li+bXf2qReSEUh+hIrVMl0zTZ2EnYJ0QVSWCbQ3oJ1Frz7JpDvl9zf01 Az1vHY7YCj+g/PmEIROrh7vzJKzbRaPBJe1JexRwLZUUXusW9fNZq4mg7uRxIGRoovOM dmpouEKsj1htMaOt6TWea2VHPvD5yBj030uNlZnV2idP2VMr1k5p2QQVlProGK5zMJIl gApw== 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=GI76cyr4oe7xQm7VhTwMq1ywtSac9z6BYM24bW5aHVo=; b=pXuiTSZ8mpMDD4aDkjmBnZU2Zwoso/zYiExVMy4rse0wYqNEjIoobdIcgAy1msdbRd sIyE9Gllej9JgllxAn3PDTkJq7Azg8P1WmT56b3pOlDhDjQYF8k/AIMXHsenoOdViNMG 1KxTmLoRc2cEopQFIgLVhG4NqpwladPgtVALQx+miZY7ni/0uWWtG8FkPUu+I+KvLOjs IHrGa4xvS9y462ZrQ0+hFzB4D2Z4bdam3ZMWWjUjgMCarn7f5L6RzDn9dzyEa+26GikE PGtRutAqh0+dmu4L0nBRakwkj81ctO6YG0UY4IILjAoAZFxsF6Yu2XrSK99BAkICfZ4h YWVg== X-Gm-Message-State: AOAM532JJUidMhZjJvFHlrN+NNsRvKau/1i7Ar4FH2O1u3Bw9eicHr94 6SsfLOt+93j1EYIth4wayD6ChYhLPnk= X-Google-Smtp-Source: ABdhPJybrjdOYGlBFVSaLRyE+Iz2a26IqIdQMhKEcovIdTipHLl2g/D5GNLxxsgwtTMR7KeblJvHLw== X-Received: by 2002:a05:620a:627:: with SMTP id 7mr18145227qkv.354.1605904656653; Fri, 20 Nov 2020 12:37:36 -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 o187sm2887170qkb.120.2020.11.20.12.37.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:35 -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 0AKKbYMx029331 for ; Fri, 20 Nov 2020 20:37:34 GMT Subject: [PATCH v2 043/118] NFSD: Replace READ* macros in nfsd4_decode_rename() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:34 -0500 Message-ID: <160590465484.1340.825247480078962188.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 964cfe3d9409..0c78f115dac9 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1207,22 +1207,12 @@ nfsd4_decode_remove(struct nfsd4_compoundargs *argp, struct nfsd4_remove *remove static __be32 nfsd4_decode_rename(struct nfsd4_compoundargs *argp, struct nfsd4_rename *rename) { - DECODE_HEAD; + __be32 status; - READ_BUF(4); - rename->rn_snamelen = be32_to_cpup(p++); - READ_BUF(rename->rn_snamelen); - SAVEMEM(rename->rn_sname, rename->rn_snamelen); - READ_BUF(4); - rename->rn_tnamelen = be32_to_cpup(p++); - READ_BUF(rename->rn_tnamelen); - SAVEMEM(rename->rn_tname, rename->rn_tnamelen); - if ((status = check_filename(rename->rn_sname, rename->rn_snamelen))) - return status; - if ((status = check_filename(rename->rn_tname, rename->rn_tnamelen))) + status = nfsd4_decode_component4(argp, &rename->rn_sname, &rename->rn_snamelen); + if (status) return status; - - DECODE_TAIL; + return nfsd4_decode_component4(argp, &rename->rn_tname, &rename->rn_tnamelen); } static __be32 From patchwork Fri Nov 20 20:37:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922379 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1DE24C56202 for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C8E0B22201 for ; Fri, 20 Nov 2020 20:38:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OOtsBU2/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731498AbgKTUhn (ORCPT ); Fri, 20 Nov 2020 15:37:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33036 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731186AbgKTUhn (ORCPT ); Fri, 20 Nov 2020 15:37:43 -0500 Received: from mail-qv1-xf42.google.com (mail-qv1-xf42.google.com [IPv6:2607:f8b0:4864:20::f42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1BBB0C0613CF for ; Fri, 20 Nov 2020 12:37:43 -0800 (PST) Received: by mail-qv1-xf42.google.com with SMTP id e14so5330448qve.3 for ; Fri, 20 Nov 2020 12:37:43 -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=3G5VUcPDf4sDfCyQBkrV47uCXx9GhaLkmVjhvjJWN8E=; b=OOtsBU2/DLYP2xV6mIjBp8+EVap1ny022vSBpWU+FByBgSEPM2oxFqVpAIhXHWeHVf iAdxYBmpwIhd7aWhhR/UF8//CTBheiSZjnn3KNtWuqJei6rraClDI9pKwZTugd+XAPZC oVQbXznJ/PuDvzisKQ8B9i3P6JW73nBcvlzWJYyTOXjAw3hg/a4fwZnHl6s305oSiyad ecYANKWCQy0YqAZkihJXxnPl+8ZLRFY946fSC8lRuK44M5WdPxkGZ8V2UOdaA/M226S8 R7RchlLNVpV/xbiB+RvdWohv/woTn0YY8dW1AiL/S/c54BfSKsS3xHSy9I2Rd+am6wj1 FibQ== 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=3G5VUcPDf4sDfCyQBkrV47uCXx9GhaLkmVjhvjJWN8E=; b=mlMVfoBvhofoVOanOEOCa9tnjyASVLaWbuP0aRkI60yq4xj9446AlStl2YJmz58LJA f23qRKJwOlVFMbzv5zBVVYDW4sJCJPY5JrjQhlOHD9J1hiEvNGck414/1zUXaxGHVPqv KZAV5qVUDOwtjoUAeSzzcX+uon5Ijw0Ifzf+ZWDoSHYK+iimtITO8zM1ah8MjP4tzMxu lYHtG4azgOyUkUUPTPk7ifAHu1dsfsClLXEPHHv8tFl4fWyslRD6hrkQiEjsc6mNOJ65 tjzP2zOhXtHDF6IPVy7oCTPUocI1GfYm+gpfuPO0AQRebvN9/DJKhJGK8ywXwaouoa0F buvQ== X-Gm-Message-State: AOAM5302BcDkaD1rZR80UCsSxFCMgoqX5qDsj3Rvv94XWpy1tS5lAXJU 2HXEoKU5JsgOwbCoW1u5yGMJBq/k3xw= X-Google-Smtp-Source: ABdhPJxoFMUsxz4Y8TC6HL6TQMCC336P4yJBkli57Y1Mc7leAIAhO2okJZxyPTIuCnEnLFE5z4D7uA== X-Received: by 2002:a0c:c583:: with SMTP id a3mr18458108qvj.2.1605904662081; Fri, 20 Nov 2020 12:37:42 -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 r125sm2621871qke.129.2020.11.20.12.37.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:41 -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 0AKKbeoD029334 for ; Fri, 20 Nov 2020 20:37:40 GMT Subject: [PATCH v2 044/118] NFSD: Replace READ* macros in nfsd4_decode_renew() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:40 -0500 Message-ID: <160590466023.1340.5442107413838909526.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 0c78f115dac9..19e8a61c8409 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1218,15 +1218,7 @@ nfsd4_decode_rename(struct nfsd4_compoundargs *argp, struct nfsd4_rename *rename static __be32 nfsd4_decode_renew(struct nfsd4_compoundargs *argp, clientid_t *clientid) { - DECODE_HEAD; - - if (argp->minorversion >= 1) - return nfserr_notsupp; - - READ_BUF(sizeof(clientid_t)); - COPYMEM(clientid, sizeof(clientid_t)); - - DECODE_TAIL; + return nfsd4_decode_clientid4(argp, clientid); } static __be32 From patchwork Fri Nov 20 20:37:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922381 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DE96C6379F for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0A4E8221F1 for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DmB/qyM7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731523AbgKTUht (ORCPT ); Fri, 20 Nov 2020 15:37:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33052 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731186AbgKTUhs (ORCPT ); Fri, 20 Nov 2020 15:37:48 -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 89216C0613CF for ; Fri, 20 Nov 2020 12:37:48 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id 199so10177733qkg.9 for ; Fri, 20 Nov 2020 12:37:48 -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=yw4KGKLM3O1eAiYXppyFyasPBZICLwwkL3HmexLFWO8=; b=DmB/qyM7ZyM0u/Y7SkBSkXUB6yn1xbj4+qSfF+wIOLD1vXEUkp3ZAeXIxVpEWDecSn YrIsT3xuy0JVDSfIWO73kXGRjaiYaEGIsnJHIQ58p0f0NKJoXpf2QkyCaj2xk8IeuQvV DLiWnBiVPkJEk68B209GbTLF31/2vWYavkB9lXud7kHtfU1SG0vQ/eonz1l9tXysM2m+ vtc98tfSCAvlP1SVGz9NUKX3GSAZXRa9ClFrESvMYqL1fCG/BLzjtuanRaaBITgFriVO 67tIdGG146y5VXNc8VS64RT7sBOpeqBgAQyuJjqtNxHVps+TXZywlRsSAEhhdO9Bn1So AgmA== 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=yw4KGKLM3O1eAiYXppyFyasPBZICLwwkL3HmexLFWO8=; b=sbO4p9PiCQbfMHrV+O8E6HKV2LsFY3ddzln8dEh49t8aml5MFuQx6JxxaolzC6yMsk jb+nYDYpRskBNBAV6XaWTnj8YuTM7MF0r9swClkF4JXuxA60LbUlBAcXGyR/QbovMmgq PNy5s0phssyBJnNXY4vpYL6DjHUtnjsOuvOBN877XB9kB445/TC0LGYx7jJE4EUTKQu2 NzSWHxGjVCIl3xH9/RpzPkif/n2iEBizN6vIPjmfSoC8A/sVW2HLw+MqARA9h1Eepfuf c09YkZXGVVsvtr8DUXYPKxAQjvKdyN8GVazzR2yM7DmTuR9kGskSutUaduWR5OMofWW9 gWSA== X-Gm-Message-State: AOAM533EVAhQMXB6z4DBjGvCO4zwWZy2ynqv8kuHWP0a2tmVBEU1Ehpw oIxuJUEzm19ofOHfYDJwrTCjCaQdSXE= X-Google-Smtp-Source: ABdhPJwBxPzjDZawV/pJzaLc2YLM19uYBsydjxk5EpeNezYf3RPClPr8VPiYxGn/6/tL2T4dJ4BM/g== X-Received: by 2002:a37:b8c:: with SMTP id 134mr18467196qkl.483.1605904667449; Fri, 20 Nov 2020 12:37:47 -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 q32sm2782526qtb.71.2020.11.20.12.37.46 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:46 -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 0AKKbj6X029337 for ; Fri, 20 Nov 2020 20:37:45 GMT Subject: [PATCH v2 045/118] NFSD: Replace READ* macros in nfsd4_decode_secinfo() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:45 -0500 Message-ID: <160590466566.1340.13897927208863181747.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 19e8a61c8409..98297182118d 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1225,16 +1225,7 @@ static __be32 nfsd4_decode_secinfo(struct nfsd4_compoundargs *argp, struct nfsd4_secinfo *secinfo) { - DECODE_HEAD; - - READ_BUF(4); - secinfo->si_namelen = be32_to_cpup(p++); - READ_BUF(secinfo->si_namelen); - SAVEMEM(secinfo->si_name, secinfo->si_namelen); - status = check_filename(secinfo->si_name, secinfo->si_namelen); - if (status) - return status; - DECODE_TAIL; + return nfsd4_decode_component4(argp, &secinfo->si_name, &secinfo->si_namelen); } static __be32 From patchwork Fri Nov 20 20:37:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922387 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A332FC6379D for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3C4E8221FB for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DBAQiiIU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731186AbgKTUhy (ORCPT ); Fri, 20 Nov 2020 15:37:54 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729927AbgKTUhx (ORCPT ); Fri, 20 Nov 2020 15:37:53 -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 B370FC0613CF for ; Fri, 20 Nov 2020 12:37:53 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id q22so10215441qkq.6 for ; Fri, 20 Nov 2020 12:37:53 -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=mdgljYVHNYCz0loJivKI9b69H22GCTRdsoXG2D8sKXs=; b=DBAQiiIUWXlemATOJMai7L4zls/SUtzKlDT1Fz1chmEoJ1Zyj/YZ7M5ng/nOMbog8R ka2RpC145nSaM0FUJhn7S+OpR7MgmVmTZ5LIwt7FGBWagrqqsNFn6rE2U59QJUHOZCJP q1KZbXwVwaoOmVX/mLbm4znSGHAqs3MnQS71bHsL2rlWKJfvBJkwzfiK/HB/u1IuiTco 6ERBC8qXZ223lCv6nmmrLsau+j5jybumtthuXkIelnH24cGhUBgzM5o4Snzo/k8a121O uvaIWynnm8rjzn3Il55gtVdvhbLyIjPcSUjN3boo6GGQMe209dFGkpAqVnXr5gaCMATo fScQ== 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=mdgljYVHNYCz0loJivKI9b69H22GCTRdsoXG2D8sKXs=; b=XabEi0uE3gRJ/H6c8LuqR0xlMAX/qE9XIJ/biPHbivjygi1W9DJ6rvNyf73+IrdXkS YJS9kf7y9X5qNBGFyjcZ5mniesRek7MrRZbmkLbYAMRoBH/ud27JRamkoyzw2I4IHnQT tkCo2dxMdYq+2HlJdHw51/0r/BTj6YqB9n1uQTb6u1zF97aBQj7RJjBGVApQRwVMJMfP CchM56rdW34oHHv7P1eSGPV0amXeD5rgQsHCdbYWfSP+gyYl3ZF5fvib+I+dr7qjh7Co l30DPp3PqvNIKlJBjutMSKKn985iaKT7R6EwR8UDO3FZfK2tO35VYDDNUj8w4jLkp01i EePA== X-Gm-Message-State: AOAM530cT25Ql2emTdJYgfUvWc2Yyp58K9vf72i72FlvKy+xSztT4G+U ZwZ57eaKLEBOSijRFSYHNws9fWZPTuw= X-Google-Smtp-Source: ABdhPJyU2N3eV35FDkAwgaaV/IWT8RUeTK1QqqO/kdNhFBDFezkxI47tkxWLUxzBK+wGsAehMKvCSA== X-Received: by 2002:a37:8c03:: with SMTP id o3mr18953277qkd.41.1605904672689; Fri, 20 Nov 2020 12:37:52 -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 d3sm2651222qth.70.2020.11.20.12.37.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:52 -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 0AKKbpOF029340 for ; Fri, 20 Nov 2020 20:37:51 GMT Subject: [PATCH v2 046/118] NFSD: Replace READ* macros in nfsd4_decode_setclientid() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:51 -0500 Message-ID: <160590467100.1340.16637234239973341346.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 47 +++++++++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 98297182118d..bd950ad7021c 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1256,31 +1256,46 @@ nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *seta static __be32 nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, struct nfsd4_setclientid *setclientid) { - DECODE_HEAD; + __be32 *p, status; if (argp->minorversion >= 1) return nfserr_notsupp; - READ_BUF(NFS4_VERIFIER_SIZE); - COPYMEM(setclientid->se_verf.data, NFS4_VERIFIER_SIZE); - + status = nfsd4_decode_verifier4(argp, &setclientid->se_verf); + if (status) + return status; status = nfsd4_decode_opaque(argp, &setclientid->se_name); if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &setclientid->se_callback_prog) < 0) return nfserr_bad_xdr; - READ_BUF(8); - setclientid->se_callback_prog = be32_to_cpup(p++); - setclientid->se_callback_netid_len = be32_to_cpup(p++); - READ_BUF(setclientid->se_callback_netid_len); - SAVEMEM(setclientid->se_callback_netid_val, setclientid->se_callback_netid_len); - READ_BUF(4); - setclientid->se_callback_addr_len = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &setclientid->se_callback_netid_len) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, setclientid->se_callback_netid_len); + if (!p) + return nfserr_bad_xdr; + setclientid->se_callback_netid_val = svcxdr_tmpalloc(argp, + setclientid->se_callback_netid_len); + if (!setclientid->se_callback_netid_val) + return nfserr_jukebox; + memcpy(setclientid->se_callback_netid_val, p, + setclientid->se_callback_netid_len); - READ_BUF(setclientid->se_callback_addr_len); - SAVEMEM(setclientid->se_callback_addr_val, setclientid->se_callback_addr_len); - READ_BUF(4); - setclientid->se_callback_ident = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &setclientid->se_callback_addr_len) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, setclientid->se_callback_addr_len); + if (!p) + return nfserr_bad_xdr; + setclientid->se_callback_addr_val = svcxdr_tmpalloc(argp, + setclientid->se_callback_addr_len); + if (!setclientid->se_callback_addr_val) + return nfserr_jukebox; + memcpy(setclientid->se_callback_addr_val, p, + setclientid->se_callback_addr_len); + if (xdr_stream_decode_u32(argp->xdr, &setclientid->se_callback_ident) < 0) + return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:37:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922385 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DBF10C64E69 for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 75930221F1 for ; Fri, 20 Nov 2020 20:38:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b6wrOmu5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731525AbgKTUiB (ORCPT ); Fri, 20 Nov 2020 15:38:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729927AbgKTUiA (ORCPT ); Fri, 20 Nov 2020 15:38:00 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 403AEC0613CF for ; Fri, 20 Nov 2020 12:37:59 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id u4so10184872qkk.10 for ; Fri, 20 Nov 2020 12:37:59 -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=Jwru0kr0Sx25x/2mJB7/3jKGABB63Q5LYZiBXkBYbK4=; b=b6wrOmu59Wzon+LQwIw+MHEX100weju1aaNExr4qktwEgcc7SuqSuJZXYpEvFuBwib JNbUn/edj/yAh6jtYZetO7xLrHVdlae+4K2Oy5gAr8/XBWH1PS17ALirt3ENgk1RPVGE 1vqarvCc5FVIvbSWeVXzrKxAMsrQke6+qPtJbejc0UPcY5MAQAN+eGHJSrkluv4Kj3R7 H3pZLjs8yFHqNJK5fpQgULLEGkPkqCjlfSuuahhbDS5ykLZMLsuTn90vYC/IUgve0vU9 OIuzL2BeZHd+G7WjRbpQytCHazahBQwKiWLGazqYRlz/uVZfZNCeiXMzCa7l1pzYAHGe 7N/Q== 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=Jwru0kr0Sx25x/2mJB7/3jKGABB63Q5LYZiBXkBYbK4=; b=G1k9eBfrSNybhBROk8ah4Gga7a3/LWR+s9xPybEcHNVuDP0TFdcKtGt0Xy1GKH0J5p f6rurbJIa9IR25hptEKS7qTbmvrWjiS3AIuTbnUO89tt3wIUwvRWHhXrtxjtwqyycIj7 7nYS9CqV0sYw19Hy5W6p17+uFAfAD2xzX4J/BWYzRLNB/58F9SX7UHInhq5J89u7MQne s2VCJUDdnBHzws/G0/CLWeyMera412HvYRXgX+uL3KOimZfwRwb2SWC3dH292dmczxD2 mWBCVmZpkGOFVZ1SReiVbYBoZl4Pf0hHINCjZ7++U9br2YL8qUz+cm56cHCArXexk2vG IfJA== X-Gm-Message-State: AOAM5327+JnV0yx9hfrhpA3eGxctsG5vqhGew4VE71xZiXNHIzAWt3fZ eJtadNugevGezeM3B6S/sn4dP2oXt5c= X-Google-Smtp-Source: ABdhPJwXx/0zS2ZMSt3Ocp9tekoDc4Ug7/QptYtvplJaccXyPtxbLg+5fDwfSXchjyT7cdnISmEg9g== X-Received: by 2002:a37:4911:: with SMTP id w17mr17252604qka.468.1605904678211; Fri, 20 Nov 2020 12:37:58 -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 j13sm3090440qtc.81.2020.11.20.12.37.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:37:57 -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 0AKKbu73029343 for ; Fri, 20 Nov 2020 20:37:56 GMT Subject: [PATCH v2 047/118] NFSD: Replace READ* macros in nfsd4_decode_setclientid_confirm() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:37:56 -0500 Message-ID: <160590467635.1340.15201330874233513759.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index bd950ad7021c..5266a5a1bdc6 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1301,16 +1301,15 @@ nfsd4_decode_setclientid(struct nfsd4_compoundargs *argp, struct nfsd4_setclient static __be32 nfsd4_decode_setclientid_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_setclientid_confirm *scd_c) { - DECODE_HEAD; + __be32 status; if (argp->minorversion >= 1) return nfserr_notsupp; - READ_BUF(8 + NFS4_VERIFIER_SIZE); - COPYMEM(&scd_c->sc_clientid, 8); - COPYMEM(&scd_c->sc_confirm, NFS4_VERIFIER_SIZE); - - DECODE_TAIL; + status = nfsd4_decode_clientid4(argp, &scd_c->sc_clientid); + if (status) + return status; + return nfsd4_decode_verifier4(argp, &scd_c->sc_confirm); } /* Also used for NVERIFY */ From patchwork Fri Nov 20 20:38:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922389 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52E2CC2D0E4 for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CFEAB22201 for ; Fri, 20 Nov 2020 20:38:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="C5MkKmAx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731531AbgKTUiG (ORCPT ); Fri, 20 Nov 2020 15:38:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33112 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729927AbgKTUiG (ORCPT ); Fri, 20 Nov 2020 15:38:06 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 703B3C0613CF for ; Fri, 20 Nov 2020 12:38:04 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id a13so10237223qkl.4 for ; Fri, 20 Nov 2020 12:38:04 -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=05pjzhfvTczQgq0W/N7Vxd6yLCuv/XD+uc2gfGybPxQ=; b=C5MkKmAx/uWmN6r/Ov9ho2rirdF12uQdD270zzDcKgypDINASsxQeMq3JnGfde+Rnj O4aBXjebEaxxl80D6mWewW6ynUSKjn2ND9f7STJKoAWefm/J0rN5LVGcwHOkdn3jdseb 69kyAnbZXX2UOFXKuzIDqetGvKGpxTW3qy/uNhcEfYw9fxAQRuRuapemWX8SjprWlG9b f+0JKeCg67mWUptmXqH9qKE2G8FvOakaggkClCIqH/G4OaFcnoQR6KS56opcceb6ajoj d21/FUj1S5QIURxKVkYSoTeX6dJab1tBtkyOB/vjGk2TX8aLY2vWNCJhHnBVIi2THck0 tV1Q== 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=05pjzhfvTczQgq0W/N7Vxd6yLCuv/XD+uc2gfGybPxQ=; b=HIc1iaQFBPy7r7JF1jHUyLaaf3tYyZDcR+D/6Wvmi/Gm0oEB7pNKfFbPnJ2PNF28Rc 8KDWGQyf6lidGgIDD2vXT6R7Vi+kW/LA6xD5Qndg3Y6BjvMoZsNuuBFTbGplQEw78nRI zQ8B41xziLtnIrPoTmB0FoG3+5DZNcCRYROMhd+MkOgr5eH6oii1IV8na6PLDNGD8HJF /IEVHr/QlM/MRf9KBYy3YWNzZGv3SPhxGQJR36df3ziyBEBWuUgpuhirYAT59u3MtTLP yUz2Xb40ZhYbrRRHgBmksLDvU/3gZeDVWinCdMseWo4P1WqGW5JYCk8eyOgJyCELMktI KDWA== X-Gm-Message-State: AOAM530Og6sePMrpZGMxyfO+Nk+z/hmuUkM70MNK2dCYb2tHwgXUKjeY rVzk2Bv+pdmUxCuVjXWVITSvsCEcgr8= X-Google-Smtp-Source: ABdhPJwSLq+ISkq91TbMEP2qZrLXj5BdXUD2FsfFE3DeCEzOy9eINy/PfRkjOEjJv0RN2NW8xxvzWA== X-Received: by 2002:a05:620a:5a5:: with SMTP id q5mr18264058qkq.199.1605904683435; Fri, 20 Nov 2020 12:38:03 -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 d48sm3068512qta.26.2020.11.20.12.38.02 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:02 -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 0AKKc1dc029346 for ; Fri, 20 Nov 2020 20:38:01 GMT Subject: [PATCH v2 048/118] NFSD: Replace READ* macros in nfsd4_decode_verify() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:01 -0500 Message-ID: <160590468171.1340.13282973653265827766.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 5266a5a1bdc6..69262f9ea5a5 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1316,20 +1316,26 @@ nfsd4_decode_setclientid_confirm(struct nfsd4_compoundargs *argp, struct nfsd4_s static __be32 nfsd4_decode_verify(struct nfsd4_compoundargs *argp, struct nfsd4_verify *verify) { - DECODE_HEAD; + __be32 *p; - if ((status = nfsd4_decode_bitmap(argp, verify->ve_bmval))) - goto out; + if (xdr_stream_decode_uint32_array(argp->xdr, verify->ve_bmval, + ARRAY_SIZE(verify->ve_bmval)) < 0) + return nfserr_bad_xdr; /* For convenience's sake, we compare raw xdr'd attributes in * nfsd4_proc_verify */ - READ_BUF(4); - verify->ve_attrlen = be32_to_cpup(p++); - READ_BUF(verify->ve_attrlen); - SAVEMEM(verify->ve_attrval, verify->ve_attrlen); + if (xdr_stream_decode_u32(argp->xdr, &verify->ve_attrlen) < 0) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, verify->ve_attrlen); + if (!p) + return nfserr_bad_xdr; + verify->ve_attrval = svcxdr_tmpalloc(argp, verify->ve_attrlen); + if (!verify->ve_attrval) + return nfserr_jukebox; + memcpy(verify->ve_attrval, p, verify->ve_attrlen); - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:38:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922391 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7DB5DC56202 for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 181D72223F for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hU7co9au" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731536AbgKTUiK (ORCPT ); Fri, 20 Nov 2020 15:38:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731533AbgKTUiK (ORCPT ); Fri, 20 Nov 2020 15:38:10 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC65DC0613CF for ; Fri, 20 Nov 2020 12:38:09 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id r7so10218806qkf.3 for ; Fri, 20 Nov 2020 12:38:09 -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=ermSJ/DR3rVl9OtAsOrxcTZAU4uf5dwIk/aNR9PjGuE=; b=hU7co9auB/ycvzCk4bBbaPtA+7UcwyQJqN8LGvm7suvY7uKvNquBrHSung56aRpQa4 fG2RFM3Xwg0i4u3Y1utygEu1pdddZL4SfqKhio5kDvC7vH0DqxwMuyhPMw2PZ73yflMt 3VnwISJxCaN856AqAd5C+567oraSA0FZIvck3/I9hw8panD0Ddss+J9luHQWmHIAJ7c7 p+lBIJihJRtxglFy/epikdH4O4xD4GT5E5Anljc+fe32lzbu9e50c/XOmy00DYmLGL6h 92guJ5Hyjgxi1zs4eSiqyKKkjnd2u0C3l8zkyTUC6zKv9qatEgCKALpiWikYRd38clxr 2mGg== 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=ermSJ/DR3rVl9OtAsOrxcTZAU4uf5dwIk/aNR9PjGuE=; b=GxZRH52+Kk5kiYEwCbeeSezkIh67vhyjqCQK2H38IkmfsGXYoZsdzmXabztKMFqOOh 9nEpHpaQ9VimP+hsB4eg6S7qjF+2sjIc7sYLgBcgwK4MxnCDJW229Gl/TD1meapu5Cxu xrxDTARj1AJjLSDdp+asuTW21r63nh7aVYnLlzKDEScMedk86BDhIyimDiMpPXW81UGF SaKWqskvoTrpvRdsTC4OR6OOW5F8F+UdY9ojZXd4E7ilbX6dFKeN1TvNdIPuFOheWXox HPpbxYoBoFGj8UJdcBFtPX+Wxt29Nt8k2Aee9UInEIpZf+M61z2qmMLoJuXs+3JxHySt pu5g== X-Gm-Message-State: AOAM532402Si6CuBuTMApKZK/G4E8k1yt07hOk8t5N6JdUdY0pKYZcOh Prz3bAgssQQZAaMGfzinr4vwKlUFY9g= X-Google-Smtp-Source: ABdhPJxBeF+vRXjcvEzLBpeKr20c419UeUFk5K3cBQMv2HDg4EwtHqb+Ja6gWVZjD8fkicQScX6fAg== X-Received: by 2002:a05:620a:14a5:: with SMTP id x5mr16919410qkj.263.1605904688654; Fri, 20 Nov 2020 12:38:08 -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 o15sm2597643qtw.64.2020.11.20.12.38.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:08 -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 0AKKc7DV029349 for ; Fri, 20 Nov 2020 20:38:07 GMT Subject: [PATCH v2 049/118] NFSD: Replace READ* macros in nfsd4_decode_write() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:06 -0500 Message-ID: <160590468692.1340.6542502883753961142.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 69262f9ea5a5..65c34bb52d16 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1341,22 +1341,23 @@ nfsd4_decode_verify(struct nfsd4_compoundargs *argp, struct nfsd4_verify *verify static __be32 nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) { - DECODE_HEAD; + __be32 status; status = nfsd4_decode_stateid4(argp, &write->wr_stateid); if (status) return status; - READ_BUF(16); - p = xdr_decode_hyper(p, &write->wr_offset); - write->wr_stable_how = be32_to_cpup(p++); + if (xdr_stream_decode_u64(argp->xdr, &write->wr_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &write->wr_stable_how) < 0) + return nfserr_bad_xdr; if (write->wr_stable_how > NFS_FILE_SYNC) - goto xdr_error; - write->wr_buflen = be32_to_cpup(p++); - + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &write->wr_buflen) < 0) + return nfserr_bad_xdr; if (!xdr_stream_subsegment(argp->xdr, &write->wr_payload, write->wr_buflen)) - goto xdr_error; + return nfserr_bad_xdr; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:38:12 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922395 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C08E7C63798 for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5373722464 for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pmnHt6G/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731533AbgKTUiP (ORCPT ); Fri, 20 Nov 2020 15:38:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33150 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729927AbgKTUiP (ORCPT ); Fri, 20 Nov 2020 15:38:15 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EFBD2C0613CF for ; Fri, 20 Nov 2020 12:38:14 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id n132so10246848qke.1 for ; Fri, 20 Nov 2020 12:38:14 -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=PzeILBtKxTimLUUwEXm6EIWPTMyjs7SG/SmKUwtVW4w=; b=pmnHt6G/Lsd42Ht6gHRP7ATjEBtjmodkItu1xT9vY/oVlNxR/4nEkstzm34kFsiaiQ YqTY5C7+MjmrPXYVVUwjhu/eOQp4UpQehLNrKsxZxSyr/zmdYrBXiUsT4V0c0xZU7Sbr wt4PdL5P98dJPnDAG6WxWMhev8KPHaWlSRk/RET9s0nuGHurQKl+fQcbt12QxOs4iFyx DQngfKIDY0lKDwiY9kq+T/e1+6WL5/eo+pMxxG5v9UM2du1knKYWZT3O1bywBIhSYy+P 9ggmxzYLLZqoBy+aYpqRBLNx3U62jc2pVLtvXgT/sFKLZg3s65zy0YJi8zVr+fOFYzm4 Zokg== 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=PzeILBtKxTimLUUwEXm6EIWPTMyjs7SG/SmKUwtVW4w=; b=HRniv6LjOgpGP33qFLpEDem2peCAsmhB0tUHllqfAOeWJf5U0q7mmJ/g5XIhkMc2k0 0O0pK7SxOQOqgeXNiZVTUrpdvWFCZiRTN5inELHfvn2r+fjSqSDhr8o9I7AZYxnmZA4H Kgvm6pVNXyA56cnpkJZZrhw6rp6kCTcIKw+0oRGJyEhA0aN6u2hoopQ5pflHzl4RgYFb 6PSy6hmVJksT6hgpReQ6FJqYS0BYhvddsDDu9grW4XreCIUeWEJ4IQN0AXFZcsSVxO8o e6ToaWfPrx7UQjHMReOzKHWAtpwnqOr1YvBt5rqOm/ZslFBaUVvBxf83aTWaBFmke9aO NDEg== X-Gm-Message-State: AOAM533NqAuQJ6teIvLEbFwfCiZ5aFKp+P8XDhe6L3ab7cvyNJpcDZbE FvG46t2xUlvIZsxgLmKhZUs1hghXZko= X-Google-Smtp-Source: ABdhPJzZY7XvVT0M7KtaWbHKXsM+tR8F0vJ4W6spTePawYLWOUuzFeAzgAFDg0IueEob4aU0C9f5Sw== X-Received: by 2002:a37:8f47:: with SMTP id r68mr15119235qkd.262.1605904693949; Fri, 20 Nov 2020 12:38:13 -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 r125sm2623023qke.129.2020.11.20.12.38.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:13 -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 0AKKcCdk029352 for ; Fri, 20 Nov 2020 20:38:12 GMT Subject: [PATCH v2 050/118] NFSD: Replace READ* macros in nfsd4_decode_release_lockowner() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:12 -0500 Message-ID: <160590469227.1340.13786920560754843823.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 65c34bb52d16..8e2609658904 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1363,20 +1363,20 @@ nfsd4_decode_write(struct nfsd4_compoundargs *argp, struct nfsd4_write *write) static __be32 nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, struct nfsd4_release_lockowner *rlockowner) { - DECODE_HEAD; + __be32 status; if (argp->minorversion >= 1) return nfserr_notsupp; - READ_BUF(12); - COPYMEM(&rlockowner->rl_clientid, sizeof(clientid_t)); - rlockowner->rl_owner.len = be32_to_cpup(p++); - READ_BUF(rlockowner->rl_owner.len); - READMEM(rlockowner->rl_owner.data, rlockowner->rl_owner.len); + status = nfsd4_decode_state_owner4(argp, &rlockowner->rl_clientid, + &rlockowner->rl_owner); + if (status) + return status; if (argp->minorversion && !zero_clientid(&rlockowner->rl_clientid)) return nfserr_inval; - DECODE_TAIL; + + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:38:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922397 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0CFDC6379D for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 90B5822201 for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RRR1v73E" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730885AbgKTUiW (ORCPT ); Fri, 20 Nov 2020 15:38:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33166 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729927AbgKTUiW (ORCPT ); Fri, 20 Nov 2020 15:38:22 -0500 Received: from mail-qv1-xf29.google.com (mail-qv1-xf29.google.com [IPv6:2607:f8b0:4864:20::f29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86BFAC0613CF for ; Fri, 20 Nov 2020 12:38:20 -0800 (PST) Received: by mail-qv1-xf29.google.com with SMTP id 9so1119152qvk.9 for ; Fri, 20 Nov 2020 12:38:20 -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=x0ThFeo0wMJpgriXQxuRTGkbLiB7jBTaA3sur/LOSbw=; b=RRR1v73ExaNzc6au/DFF3BMbABkA4F9WO9lsGORReviFpygmkZvKCp6BHPsGMu9joA tz85aoqt8I+bemUeIGJvGtpmQVmN4upTOeBuySaB33Xm4trShz1UR/Ef+dLpSO/a8W62 O71y5mRxpE+1GvHjfBQa0zDnrx7qPCdD4g6wb5eUbx6PrY85iX61z1FZiVVZah5i2Ww3 EAkflE1xOtiRHGKOnDEuWnK9asTTzgs6bxtkynQQoa9MC1VO3E8A6TkV6iIJoT4dh52l VrOcKKKVEnf9MLBxV1rcPJNHhvuXpn6GK1HZoBn3xbUX33Hy9jEguqVUIX5qpNzC6o1y ewcQ== 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=x0ThFeo0wMJpgriXQxuRTGkbLiB7jBTaA3sur/LOSbw=; b=U4H6v+a34cDjmMbBFANgIXrfaVhVrqeoyvk+Tj9R/uAUbqUm4YBDVYnnm4PRPtUGeg O+tWUPoq5VA5HXi8EKtJ2HzA4ufITtpjh60BJABhFisNzPVH4Kcv3GfFdK91SOrCZSmA zT9TUCpWsjZu1hj9JlUPlZ2ckdgpzH6sjOu/fadFMEKZifuS8vn31WVTlZpIfo4sJMGx khOti0B2D2bB7mbe+DHVUbvRn2XuPvJjQCObK/Zc9vBuIzjacxrtryLqEftel5Eia4v/ BBoF4wVfOsjsInKZGwVRYGTbwURBfkcv2TqHjOOuPybvKgR3KTDADvnRimY+/jxpgQ/2 U7DQ== X-Gm-Message-State: AOAM533GMiulppewEYWEAEt/3NvOEWx6BgBMCspp7GsJ8Sf/4ttL4sVD wqp+trm4OMYic1S2BOY6t0kW2Ut/u9g= X-Google-Smtp-Source: ABdhPJx23h3PwHW5FPRA+LtuBkZlLjvsvOb82AAxaqGPj4os1aXa1GBjL2Pa5g134rl1Cqb+TeRyaQ== X-Received: by 2002:ad4:4743:: with SMTP id c3mr18093096qvx.62.1605904699312; Fri, 20 Nov 2020 12:38:19 -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 l79sm2863612qke.1.2020.11.20.12.38.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:18 -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 0AKKcHnf029355 for ; Fri, 20 Nov 2020 20:38:17 GMT Subject: [PATCH v2 051/118] NFSD: Replace READ* macros in nfsd4_decode_cb_sec() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:17 -0500 Message-ID: <160590469760.1340.11225339390417699230.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 165 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 107 insertions(+), 58 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 8e2609658904..d9c57b2f3fcf 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -210,6 +210,25 @@ static char *savemem(struct nfsd4_compoundargs *argp, __be32 *p, int nbytes) * NFSv4 basic data type decoders */ +/* + * This helper handles variable-length opaques which belong to protocol + * elements that this implementation does not support. + */ +static __be32 +nfsd4_decode_ignored_string(struct nfsd4_compoundargs *argp, u32 maxlen) +{ + u32 len; + + if (xdr_stream_decode_u32(argp->xdr, &len) < 0) + return nfserr_bad_xdr; + if (maxlen && len > maxlen) + return nfserr_bad_xdr; + if (!xdr_inline_decode(argp->xdr, len)) + return nfserr_bad_xdr; + + return nfs_ok; +} + static __be32 nfsd4_decode_opaque(struct nfsd4_compoundargs *argp, struct xdr_netobj *o) { @@ -590,87 +609,117 @@ nfsd4_decode_stateid4(struct nfsd4_compoundargs *argp, stateid_t *sid) return nfs_ok; } -static __be32 nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) +/* Defined in Appendix A of RFC 5531 */ +static __be32 +nfsd4_decode_authsys_parms(struct nfsd4_compoundargs *argp, + struct nfsd4_cb_sec *cbs) { - DECODE_HEAD; - struct user_namespace *userns = nfsd_user_namespace(argp->rqstp); - u32 dummy, uid, gid; - char *machine_name; - int i; - int nr_secflavs; + u32 stamp, gidcount, uid, gid; + __be32 *p, status; + + if (xdr_stream_decode_u32(argp->xdr, &stamp) < 0) + return nfserr_bad_xdr; + /* machine name */ + status = nfsd4_decode_ignored_string(argp, 255); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &uid) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &gid) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &gidcount) < 0) + return nfserr_bad_xdr; + if (gidcount > 16) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, gidcount << 2); + if (!p) + return nfserr_bad_xdr; + if (cbs->flavor == (u32)(-1)) { + struct user_namespace *userns = nfsd_user_namespace(argp->rqstp); + + kuid_t kuid = make_kuid(userns, uid); + kgid_t kgid = make_kgid(userns, gid); + if (uid_valid(kuid) && gid_valid(kgid)) { + cbs->uid = kuid; + cbs->gid = kgid; + cbs->flavor = RPC_AUTH_UNIX; + } else { + dprintk("RPC_AUTH_UNIX with invalid uid or gid, ignoring!\n"); + } + } + + return nfs_ok; +} + +static __be32 +nfsd4_decode_gss_cb_handles4(struct nfsd4_compoundargs *argp, + struct nfsd4_cb_sec *cbs) +{ + __be32 status; + u32 service; + + dprintk("RPC_AUTH_GSS callback secflavor not supported!\n"); + + if (xdr_stream_decode_u32(argp->xdr, &service) < 0) + return nfserr_bad_xdr; + if (service < RPC_GSS_SVC_NONE || service > RPC_GSS_SVC_PRIVACY) + return nfserr_bad_xdr; + /* gcbp_handle_from_server */ + status = nfsd4_decode_ignored_string(argp, 0); + if (status) + return status; + /* gcbp_handle_from_client */ + status = nfsd4_decode_ignored_string(argp, 0); + if (status) + return status; + + return nfs_ok; +} + +/* a counted array of callback_sec_parms4 */ +static __be32 +nfsd4_decode_cb_sec(struct nfsd4_compoundargs *argp, struct nfsd4_cb_sec *cbs) +{ + u32 i, secflavor, nr_secflavs; + __be32 status; /* callback_sec_params4 */ - READ_BUF(4); - nr_secflavs = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &nr_secflavs) < 0) + return nfserr_bad_xdr; if (nr_secflavs) cbs->flavor = (u32)(-1); else /* Is this legal? Be generous, take it to mean AUTH_NONE: */ cbs->flavor = 0; + for (i = 0; i < nr_secflavs; ++i) { - READ_BUF(4); - dummy = be32_to_cpup(p++); - switch (dummy) { + if (xdr_stream_decode_u32(argp->xdr, &secflavor) < 0) + return nfserr_bad_xdr; + switch (secflavor) { case RPC_AUTH_NULL: - /* Nothing to read */ + /* void */ if (cbs->flavor == (u32)(-1)) cbs->flavor = RPC_AUTH_NULL; break; case RPC_AUTH_UNIX: - READ_BUF(8); - /* stamp */ - dummy = be32_to_cpup(p++); - - /* machine name */ - dummy = be32_to_cpup(p++); - READ_BUF(dummy); - SAVEMEM(machine_name, dummy); - - /* uid, gid */ - READ_BUF(8); - uid = be32_to_cpup(p++); - gid = be32_to_cpup(p++); - - /* more gids */ - READ_BUF(4); - dummy = be32_to_cpup(p++); - READ_BUF(dummy * 4); - if (cbs->flavor == (u32)(-1)) { - kuid_t kuid = make_kuid(userns, uid); - kgid_t kgid = make_kgid(userns, gid); - if (uid_valid(kuid) && gid_valid(kgid)) { - cbs->uid = kuid; - cbs->gid = kgid; - cbs->flavor = RPC_AUTH_UNIX; - } else { - dprintk("RPC_AUTH_UNIX with invalid" - "uid or gid ignoring!\n"); - } - } + status = nfsd4_decode_authsys_parms(argp, cbs); + if (status) + return status; break; case RPC_AUTH_GSS: - dprintk("RPC_AUTH_GSS callback secflavor " - "not supported!\n"); - READ_BUF(8); - /* gcbp_service */ - dummy = be32_to_cpup(p++); - /* gcbp_handle_from_server */ - dummy = be32_to_cpup(p++); - READ_BUF(dummy); - p += XDR_QUADLEN(dummy); - /* gcbp_handle_from_client */ - READ_BUF(4); - dummy = be32_to_cpup(p++); - READ_BUF(dummy); + status = nfsd4_decode_gss_cb_handles4(argp, cbs); + if (status) + return status; break; default: - dprintk("Illegal callback secflavor\n"); return nfserr_inval; } } - DECODE_TAIL; + + return nfs_ok; } + /* * NFSv4 operation argument decoders */ From patchwork Fri Nov 20 20:38:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922393 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42A53C63777 for ; Fri, 20 Nov 2020 20:38:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D074C2223F for ; Fri, 20 Nov 2020 20:38:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YSxI6jcb" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731535AbgKTUi0 (ORCPT ); Fri, 20 Nov 2020 15:38:26 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33184 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731363AbgKTUi0 (ORCPT ); Fri, 20 Nov 2020 15:38:26 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF6EAC0613CF for ; Fri, 20 Nov 2020 12:38:25 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id g17so8128189qts.5 for ; Fri, 20 Nov 2020 12:38:25 -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=PWguUzYNnh3rGSojCDdJQa/ybBo6UlRXaLrHLvCuuko=; b=YSxI6jcbTTI2Joe61OsrlUXXsAL17DLlFQsOT4Z63dKLEu+lYE+psMC0yFIRo8hSA3 sAJd47cJ9/qFaaMjTOsuRY++5DIOYe9+MakTx8lgpOUan50c/hQCEVUBYogMcUbOX6Fz RtlRRjqoW9G4cFYmYKvCRDuL7b7UP5LGmIkCbpRFO/JYWpbJN5HIcre4cFF1tMd5sNPo GPqrlwBrJ4EapeQecKhYZk8E8QkJ4MgS3YQdpo6lpQ6FhLFSmt5dleUyKhgSr6Xsdwml HL+a431pQs7xxPrmh6E9weIffisLchtgQQsHAfZMFoYGOUyaAda9EpdojbkqoT1wCkYN egzw== 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=PWguUzYNnh3rGSojCDdJQa/ybBo6UlRXaLrHLvCuuko=; b=C0oJq6NLPu4RdhUarqWFhrLiZz4YgiFR3/AvNasEF+5BH0r4sgvRBY7SqA2ADMmZ48 9lhZW0X0iYy5IxM4pPnEng+5SjqXBVR4t8rZtdxmyPjvVqf51u9F2qttpaBWTJsl/A6O 0xVqzlCCW8Nwj6v+YQcxil88Xvf6HWfBdX6IL7MP1KKoBJHThlBOa81GpX3qOvf9ZVZd QRvwBKgTwX0pPXo5uGBMmUoZjvRTRim9ZvgzbWpZAH6f08y3KWp81iT4G87lSPdrJorS n8183o92CS9Sm/rncMBBt/lPtULOAUeHf52Zq3u424Wo2qqtLZnvEQgA33yJcc5ycBRy 4cEw== X-Gm-Message-State: AOAM532QE66Ii6fgfj5lU4SxZolhMezOh0TZavnPouV9r7UC41n16sAk +BLs/qn9xW0Vqf9XfYzBOohl7FXwGr4= X-Google-Smtp-Source: ABdhPJwfhD3ACoBen9KeDEzZ2GCXVs4J0Bi+tidEUepkRBhKvq8q0PCKQ8581o8lWhfE/FhANPghDg== X-Received: by 2002:ac8:4614:: with SMTP id p20mr8295305qtn.346.1605904704839; Fri, 20 Nov 2020 12:38:24 -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 k4sm2741788qki.2.2020.11.20.12.38.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:24 -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 0AKKcMsI029358 for ; Fri, 20 Nov 2020 20:38:22 GMT Subject: [PATCH v2 052/118] NFSD: Replace READ* macros in nfsd4_decode_backchannel_ctl() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:22 -0500 Message-ID: <160590470293.1340.2134119984606842595.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index d9c57b2f3fcf..82282fceec5d 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -733,17 +733,6 @@ nfsd4_decode_access(struct nfsd4_compoundargs *argp, return nfs_ok; } -static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, struct nfsd4_backchannel_ctl *bc) -{ - DECODE_HEAD; - - READ_BUF(4); - bc->bc_cb_program = be32_to_cpup(p++); - nfsd4_decode_cb_sec(argp, &bc->bc_cb_sec); - - DECODE_TAIL; -} - static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, struct nfsd4_bind_conn_to_session *bcts) { DECODE_HEAD; @@ -1428,6 +1417,13 @@ nfsd4_decode_release_lockowner(struct nfsd4_compoundargs *argp, struct nfsd4_rel return nfs_ok; } +static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, struct nfsd4_backchannel_ctl *bc) +{ + if (xdr_stream_decode_u32(argp->xdr, &bc->bc_cb_program) < 0) + return nfserr_bad_xdr; + return nfsd4_decode_cb_sec(argp, &bc->bc_cb_sec); +} + static __be32 nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, struct nfsd4_exchange_id *exid) From patchwork Fri Nov 20 20:38:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922399 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7C32AC6379F for ; Fri, 20 Nov 2020 20:38:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1B09222201 for ; Fri, 20 Nov 2020 20:38:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pMdhOy31" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731363AbgKTUib (ORCPT ); Fri, 20 Nov 2020 15:38:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729819AbgKTUib (ORCPT ); Fri, 20 Nov 2020 15:38:31 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2DF06C0613CF for ; Fri, 20 Nov 2020 12:38:31 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id i12so8140326qtj.0 for ; Fri, 20 Nov 2020 12:38:31 -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=28oQ7O6FCayJCsmi8hsKcu8o7cPX/xW4T1S9Q7dtSbg=; b=pMdhOy31QQd80FleVndZFXR7n1Q/xTKY9AfVMD9PvC8eHP69miH+H+vsTybziEBtlt FT2HC46Xr9DoONkle5rVe/XcZbyZzst/H3BcfeQo5w05kA73iJ61DARIadkIVX9zqMnh o6e0bVIMaI1bYjlZmDUpmg8/wb5cVBBrc0GIfUgw3Slg0tfElekRIWirLb5R7fJK6jqg g5D1/E9vZQya1eyQ5rU6EBJtBt+jM1plK87/UY5CI8hQ0IguXZXUfEI8H/E7BVRKb4EC 19ZGgM9wOM5qQyGu22CXB0mu+G5k6j/6lcU9Jv7eJGWF/THDakMXavrLSA+7Ym3CbvUb RBBA== 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=28oQ7O6FCayJCsmi8hsKcu8o7cPX/xW4T1S9Q7dtSbg=; b=QWGmZGOr8N545VJ8YfB0M7ZKxhwEebBmf2XwRjRKC5mtp9oVWgxDpscEj0LK6xtL7d /mZlv49GqI9P2CYTWYhmc2HMNCIe23SXhICY2RsL4lQtNecFHaxLvNnNOhj2Bwwxc51H Egb5jHm3p8YWm01VTURmqXCNhFQq5r77ILMsDY1jHBwHfYIW5v9/msmDiypZ4KWsJXnm H3VvFV+VcGbl7QedyHo+XKUGlODxAlUGZtSOGdp5Rs9grLluad/1oSbyZsTuP9J/s20b +QT4zmF2uopESqTlW4QRx08cpAO3e/sk+7acNWGLM/+ugikVWl5byYP7wOyRaUZ5KihC /i7A== X-Gm-Message-State: AOAM532K9dM0HI9hWjzzzi5TcLrHj5PCmnrf5r+weRGi4201wPVke4Dd aSopWczdc5faCPBFEnaXRc1EzVtU9SQ= X-Google-Smtp-Source: ABdhPJyped1V+BZUoWDxr5mGaPQXWSpemc1o4l9I5Ng93gH/hA3mc8RN66ubvNzihn/WwWxkjW5YFg== X-Received: by 2002:ac8:5191:: with SMTP id c17mr18162903qtn.116.1605904710109; Fri, 20 Nov 2020 12:38:30 -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 i21sm2689241qtm.1.2020.11.20.12.38.29 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:29 -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 0AKKcSMb029361 for ; Fri, 20 Nov 2020 20:38:28 GMT Subject: [PATCH v2 053/118] NFSD: Replace READ* macros in nfsd4_decode_bind_conn_to_session() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:28 -0500 Message-ID: <160590470826.1340.9380897669536041752.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org A dedicated sessionid4 decoder is introduced that will be used by other operation decoders in subsequent patches. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 82282fceec5d..48cb409f11c2 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -609,6 +609,19 @@ nfsd4_decode_stateid4(struct nfsd4_compoundargs *argp, stateid_t *sid) return nfs_ok; } +static __be32 +nfsd4_decode_sessionid(struct nfsd4_compoundargs *argp, + struct nfs4_sessionid *sessionid) +{ + __be32 *p; + + p = xdr_inline_decode(argp->xdr, NFS4_MAX_SESSIONID_LEN); + if (!p) + return nfserr_bad_xdr; + memcpy(sessionid->data, p, sizeof(sessionid->data)); + return nfs_ok; +} + /* Defined in Appendix A of RFC 5531 */ static __be32 nfsd4_decode_authsys_parms(struct nfsd4_compoundargs *argp, @@ -733,18 +746,6 @@ nfsd4_decode_access(struct nfsd4_compoundargs *argp, return nfs_ok; } -static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, struct nfsd4_bind_conn_to_session *bcts) -{ - DECODE_HEAD; - - READ_BUF(NFS4_MAX_SESSIONID_LEN + 8); - COPYMEM(bcts->sessionid.data, NFS4_MAX_SESSIONID_LEN); - bcts->dir = be32_to_cpup(p++); - /* XXX: skipping ctsa_use_conn_in_rdma_mode. Perhaps Tom Tucker - * could help us figure out we should be using it. */ - DECODE_TAIL; -} - static __be32 nfsd4_decode_close(struct nfsd4_compoundargs *argp, struct nfsd4_close *close) { @@ -1424,6 +1425,22 @@ static __be32 nfsd4_decode_backchannel_ctl(struct nfsd4_compoundargs *argp, stru return nfsd4_decode_cb_sec(argp, &bc->bc_cb_sec); } +static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, struct nfsd4_bind_conn_to_session *bcts) +{ + u32 use_conn_in_rdma_mode; + __be32 status; + + status = nfsd4_decode_sessionid(argp, &bcts->sessionid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &bcts->dir) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &use_conn_in_rdma_mode) < 0) + return nfserr_bad_xdr; + + return nfs_ok; +} + static __be32 nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, struct nfsd4_exchange_id *exid) From patchwork Fri Nov 20 20:38:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922401 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 617C5C2D0E4 for ; Fri, 20 Nov 2020 20:38:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 168FA22201 for ; Fri, 20 Nov 2020 20:38:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JrXsMU3t" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731575AbgKTUig (ORCPT ); Fri, 20 Nov 2020 15:38:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731537AbgKTUig (ORCPT ); Fri, 20 Nov 2020 15:38:36 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2FA88C0613CF for ; Fri, 20 Nov 2020 12:38:36 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id l2so10269580qkf.0 for ; Fri, 20 Nov 2020 12:38:36 -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=PkvRxXKbxE/hmkAq4ZjfEGSLtHeFPCbl574n04j5WCo=; b=JrXsMU3tvZ84iAitsAgEc/r51t+qYqWnO9PvG+GkIEPRbhoYz98A1cKc2cN87mpaTT Pcm2nnVewG+q8EuDHNwBmhifMM44yGVhHyLKpUbh/3xRmX1v7GOm1ZuoVEwjcVgK0Euv lW4TMYweVdU7YlR2exTWcEJ8BpBLHFdnS9NIpfR1WeKpWJReJKM43Kf5dLAC3OP9fswg 5PtocIwCOwkiLVPuTLuTB+l0KBjA3jxD9CeBdYqqAUPJyqjLCLERlnyabL3DLU9t/NZJ n4roqNWMA2gl8MiyeHkg26Du85ZAK0ip3jTWR31zfOk/XOnbNGrQUjsI+VHmO9HtBlBT NRDA== 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=PkvRxXKbxE/hmkAq4ZjfEGSLtHeFPCbl574n04j5WCo=; b=dbC50g4xjfuphmHNwqeshg72XnabpOoK5tPzwg8iHW4h3MPH+B4ag2M9EOwOE+S89A Y7LQGG4dmdJQhu4tDC3YKofTuvnooi+uhjH32l2rKn+p7PKE8re0NdqBLhn2H9TsnpTb aRHrJK3V+5eQJQZSK8huwpkXgTW+WwlNaMTCWyLIEQCzuuxGcMMhwUHrS5DU4Dk20KPa YMLhZjYAZ4pwKfgq3xXjaLqm0HIo3cgjGn0pW1GGxJFullH7DiaNqZ0B7hdd7otLHMCp 4zQFHp1+GlMLZCizGJvalCMVqhdWSWCgPSynhUHYzo+hddeDhHYNvUMwB7Bcc4PVPBVN Roqw== X-Gm-Message-State: AOAM532/GlA21m9tLwMU9KMAe82BKVV/sSbAw/C6SXDv2KR9VhoDDDmD G9xokSn0dR/L1bVrtYK8k88zfWk12As= X-Google-Smtp-Source: ABdhPJw96YrpQv/9JzxEhVXob0tE23Tft5Vvvl0I6eZTgVBb9ua0endh9pnESeOIBm9wHCLsNFWvcA== X-Received: by 2002:a37:a546:: with SMTP id o67mr19417091qke.167.1605904715117; Fri, 20 Nov 2020 12:38:35 -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 j124sm2873310qkf.113.2020.11.20.12.38.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:34 -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 0AKKcXuf029365 for ; Fri, 20 Nov 2020 20:38:33 GMT Subject: [PATCH v2 054/118] NFSD: Add a separate decoder to handle state_protect_ops From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:33 -0500 Message-ID: <160590471363.1340.13844630450172330776.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity and de-duplication of code. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 66 ++++++++++++++++++----------------------------------- 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 48cb409f11c2..a74d86564eb7 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -313,32 +313,6 @@ nfsd4_decode_verifier4(struct nfsd4_compoundargs *argp, nfs4_verifier *verf) return nfs_ok; } -static __be32 -nfsd4_decode_bitmap(struct nfsd4_compoundargs *argp, u32 *bmval) -{ - u32 bmlen; - DECODE_HEAD; - - bmval[0] = 0; - bmval[1] = 0; - bmval[2] = 0; - - READ_BUF(4); - bmlen = be32_to_cpup(p++); - if (bmlen > 1000) - goto xdr_error; - - READ_BUF(bmlen << 2); - if (bmlen > 0) - bmval[0] = be32_to_cpup(p++); - if (bmlen > 1) - bmval[1] = be32_to_cpup(p++); - if (bmlen > 2) - bmval[2] = be32_to_cpup(p++); - - DECODE_TAIL; -} - static __be32 nfsd4_decode_nfsace4(struct nfsd4_compoundargs *argp, struct nfs4_ace *ace) { @@ -1441,12 +1415,25 @@ static __be32 nfsd4_decode_bind_conn_to_session(struct nfsd4_compoundargs *argp, return nfs_ok; } +static __be32 nfsd4_decode_state_protect_ops(struct nfsd4_compoundargs *argp, + u32 *must_enforce, u32 me_len, + u32 *must_allow, u32 ma_len) +{ + if (xdr_stream_decode_uint32_array(argp->xdr, must_enforce, me_len) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_uint32_array(argp->xdr, must_allow, ma_len) < 0) + return nfserr_bad_xdr; + + return nfs_ok; +} + static __be32 nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, struct nfsd4_exchange_id *exid) { int dummy, tmp; DECODE_HEAD; + u32 bm[3]; READ_BUF(NFS4_VERIFIER_SIZE); COPYMEM(exid->verifier.data, NFS4_VERIFIER_SIZE); @@ -1465,27 +1452,20 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, case SP4_NONE: break; case SP4_MACH_CRED: - /* spo_must_enforce */ - status = nfsd4_decode_bitmap(argp, - exid->spo_must_enforce); - if (status) - goto out; - /* spo_must_allow */ - status = nfsd4_decode_bitmap(argp, exid->spo_must_allow); + status = nfsd4_decode_state_protect_ops(argp, + exid->spo_must_enforce, + ARRAY_SIZE(exid->spo_must_enforce), + exid->spo_must_allow, + ARRAY_SIZE(exid->spo_must_allow)); if (status) - goto out; + return status; break; case SP4_SSV: /* ssp_ops */ - READ_BUF(4); - dummy = be32_to_cpup(p++); - READ_BUF(dummy * 4); - p += dummy; - - READ_BUF(4); - dummy = be32_to_cpup(p++); - READ_BUF(dummy * 4); - p += dummy; + status = nfsd4_decode_state_protect_ops(argp, bm, ARRAY_SIZE(bm), + bm, ARRAY_SIZE(bm)); + if (status) + return status; /* ssp_hash_algs<> */ READ_BUF(4); From patchwork Fri Nov 20 20:38:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922403 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5B6FC56202 for ; Fri, 20 Nov 2020 20:38:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 513EB2223F for ; Fri, 20 Nov 2020 20:38:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="X7DYxj2Y" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731411AbgKTUim (ORCPT ); Fri, 20 Nov 2020 15:38:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33230 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731537AbgKTUil (ORCPT ); Fri, 20 Nov 2020 15:38:41 -0500 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 988B9C0613CF for ; Fri, 20 Nov 2020 12:38:41 -0800 (PST) Received: by mail-qt1-x842.google.com with SMTP id t5so8132604qtp.2 for ; Fri, 20 Nov 2020 12:38:41 -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=PRD5IJDUYim/vtvxyk+sitr0lSHX3HA5IU0Ccu4DtoI=; b=X7DYxj2Yd4No04cmxSDLznNGWTgOlK5DCiuDWS/Sxhr55ANwOLGjKMFgBV0AFQua4s tfDjZDANXUOYTXSwicQt5cibB+1EPey/F6twQ+iUFm3sxidEDwwt2ZnR53pXTK4Njmvt D5KWiHJtqyfPbUjsnxe4g9RbIPZTmeKwipsvibXw+dkDYqJd42l0wlmn/CAtA5nNPKzF Nc6AT5agSeHkotyLieIFlx+nmBTntJ4X4FFuqSBllS1qFci+ITsHvaA+XjxuCu16Z84E UVufwVVVaO3WAeJW+mjTChSNxwXQ3dgagxNoQtG2H29NUvexsWa9v000SuOkK+YCXJoi 6t8Q== 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=PRD5IJDUYim/vtvxyk+sitr0lSHX3HA5IU0Ccu4DtoI=; b=uNXHXAXO0rJlrUvdpdtM7OxuyDlDlHm1i+30Rh8Mn1hv0eU4yAr7i58wruXYKmOoAy 81qTZI3PDKPTqAwbeY+YBwjwLRexf39QEBGOYJI1j0qkejRwjbLOzzqDrMtXAIDg57Vj N5S9wsawC4m7iVlWZnGx8hSHW42Am/yE9wvQS80fwHPTaQmr9ry9jmGv8ORM+mIvAyam JKyB3wrBj3Sp43gjwglZz3flAVD9JduZCK8mbVmvomsJ69GVXOez6kaYloFmP1uHzwvt gqmN0F+Eu7Rh+RcYGIwa4Q8FKR747Jo0gotM2rob0UErJ3paVH0b/k+4ELukv+S2XV/Y 9kMQ== X-Gm-Message-State: AOAM5335T6GD2LtoWjsi/4f0fEjTq+KiIjRy07xfT0gWJ04h/b748G4p 7mK2sEJoPtHdauZxcWOrxYll24y628A= X-Google-Smtp-Source: ABdhPJw5GYrJH1LAek+tcnWtQNgbaScXpfX0nfOltUmlFI1IIr6qP1DQ6MZdJdDWJ8Z1Q8qEPE5moQ== X-Received: by 2002:ac8:36bc:: with SMTP id a57mr17710423qtc.193.1605904720524; Fri, 20 Nov 2020 12:38:40 -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 k4sm2759475qtp.5.2020.11.20.12.38.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:39 -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 0AKKccIr029368 for ; Fri, 20 Nov 2020 20:38:38 GMT Subject: [PATCH v2 055/118] NFSD: Add a separate decoder for ssv_sp_parms From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:38 -0500 Message-ID: <160590471875.1340.10002189081894492301.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 71 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index a74d86564eb7..dc39b004bcb4 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1427,13 +1427,53 @@ static __be32 nfsd4_decode_state_protect_ops(struct nfsd4_compoundargs *argp, return nfs_ok; } +/* + * This implementation currently does not support SP4_SSV. + * This decoder simply skips over these arguments. + */ +static __be32 nfsd4_decode_ssv_sp_parms(struct nfsd4_compoundargs *argp) +{ + u32 bm[3], count, window, num_gss_handles; + __be32 status; + + /* ssp_ops */ + status = nfsd4_decode_state_protect_ops(argp, bm, ARRAY_SIZE(bm), + bm, ARRAY_SIZE(bm)); + if (status) + return status; + + /* ssp_hash_algs<> */ + if (xdr_stream_decode_u32(argp->xdr, &count) < 0) + return nfserr_bad_xdr; + while (count--) { + status = nfsd4_decode_ignored_string(argp, 0); + if (status) + return status; + } + + /* ssp_encr_algs<> */ + if (xdr_stream_decode_u32(argp->xdr, &count) < 0) + return nfserr_bad_xdr; + while (count--) { + status = nfsd4_decode_ignored_string(argp, 0); + if (status) + return status; + } + + if (xdr_stream_decode_u32(argp->xdr, &window) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &num_gss_handles) < 0) + return nfserr_bad_xdr; + + return nfs_ok; +} + static __be32 nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, struct nfsd4_exchange_id *exid) { - int dummy, tmp; DECODE_HEAD; - u32 bm[3]; + int dummy; READ_BUF(NFS4_VERIFIER_SIZE); COPYMEM(exid->verifier.data, NFS4_VERIFIER_SIZE); @@ -1461,34 +1501,9 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, return status; break; case SP4_SSV: - /* ssp_ops */ - status = nfsd4_decode_state_protect_ops(argp, bm, ARRAY_SIZE(bm), - bm, ARRAY_SIZE(bm)); + status = nfsd4_decode_ssv_sp_parms(argp); if (status) return status; - - /* ssp_hash_algs<> */ - READ_BUF(4); - tmp = be32_to_cpup(p++); - while (tmp--) { - READ_BUF(4); - dummy = be32_to_cpup(p++); - READ_BUF(dummy); - p += XDR_QUADLEN(dummy); - } - - /* ssp_encr_algs<> */ - READ_BUF(4); - tmp = be32_to_cpup(p++); - while (tmp--) { - READ_BUF(4); - dummy = be32_to_cpup(p++); - READ_BUF(dummy); - p += XDR_QUADLEN(dummy); - } - - /* ignore ssp_window and ssp_num_gss_handles: */ - READ_BUF(8); break; default: goto xdr_error; From patchwork Fri Nov 20 20:38:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922405 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D1D5C2D0E4 for ; Fri, 20 Nov 2020 20:39:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A7AF62223F for ; Fri, 20 Nov 2020 20:39:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UZVmhbfR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731579AbgKTUir (ORCPT ); Fri, 20 Nov 2020 15:38:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730726AbgKTUiq (ORCPT ); Fri, 20 Nov 2020 15:38:46 -0500 Received: from mail-qv1-xf42.google.com (mail-qv1-xf42.google.com [IPv6:2607:f8b0:4864:20::f42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5A30C0613CF for ; Fri, 20 Nov 2020 12:38:46 -0800 (PST) Received: by mail-qv1-xf42.google.com with SMTP id ek7so5321354qvb.6 for ; Fri, 20 Nov 2020 12:38:46 -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=K5498zebdvhhOUBPszMRXJTT3KyxwJIy+dG8JVJZVcw=; b=UZVmhbfRxL4tAVGTQtYOC3O/un6r9ytSeuoh2g7r7ABMh4QCNzlsd/0hY9h1lm1a4u 6kcBXo4mI0OYPVHOGIbTB5NWxPGD9vIwO4ufh+tkoHYc6i/V1f+/TL/uwV9WictNEdfx AZ6v4sgI9IqwLaY/xJscoOvPKMLxe3NIIbaIE5I1tErQmjGbMrsuxT0JtVo3pnNgN26a aHGB+TDz7UvSS8giyoiUp6SjTDWU8P01Abf9o4Jd9+l97M42uuVX2lfpHFg4CeCKUnt+ xoh0XrTfaptC7yrOTMkgR3uEzceF6rdh29Ib4NzDp8VXOUofqA3jC2hiqqODqR2yoM3O ulfg== 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=K5498zebdvhhOUBPszMRXJTT3KyxwJIy+dG8JVJZVcw=; b=hJsGypHlzLxjQ7J3EVjjZAvr7lJ4Xy8ANFDSjbMNKZUlv5+LeQjeBl4Iqv2Ul+P4BU +GFzjSp4PILNSu8tAQSyOqvPUqYExlRTfBRjRh7s9aHv22qxcAnyeiC5zOh/SsLye4w9 FIbW+CU9CB+Pl4imo/lHufk+ht95qBkkz6suDGS+ey/1m3zbLEgd/DLGzD07Xfj3VN0/ 4tRkcHVs0dFatDRzF7FsL43m/phHWMaUbB9htL7ReE8TM3Q8XlCp/Qv8c2VXL80usfhg Ty1g4kY4HDg3BCLQaaL+sRQLoqiSeXc7Fu77R8N1UYZUg21KxlJ+xWFdb/CW7CkTPQEr 00Fg== X-Gm-Message-State: AOAM532H/OwqxjxyU9pl5ulZgV0uAXixyMlgJlpIYbBx1auBEmTM1xuA XWWSZlDK8JjYQcxdCv5Er2bSEyVj+H8= X-Google-Smtp-Source: ABdhPJyfsITtj6Aor8PNHiymZbnjTe4PzbAi9qiZlCzfKi/jCRoZplZMyAuaAblULN+ewj3vYhqWkw== X-Received: by 2002:a05:6214:6a2:: with SMTP id s2mr18178153qvz.58.1605904725567; Fri, 20 Nov 2020 12:38:45 -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 g8sm2823051qkk.131.2020.11.20.12.38.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:44 -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 0AKKci0h029371 for ; Fri, 20 Nov 2020 20:38:44 GMT Subject: [PATCH v2 056/118] NFSD: Add a helper to decode state_protect4_a From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:44 -0500 Message-ID: <160590472409.1340.12180918142294931542.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Also, remove a stale comment. Commit ed94164398c9 ("nfsd: implement machine credential support for some operations") added support for SP4_MACH_CRED, so state_protect_a is no longer completely ignored. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4state.c | 2 +- fs/nfsd/nfs4xdr.c | 45 +++++++++++++++++++++++++++------------------ fs/nfsd/xdr4.h | 2 +- 3 files changed, 29 insertions(+), 20 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index d7f27ed6b794..be6dcc4c2ab0 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -3066,7 +3066,7 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, rpc_ntop(sa, addr_str, sizeof(addr_str)); dprintk("%s rqstp=%p exid=%p clname.len=%u clname.data=%p " - "ip_addr=%s flags %x, spa_how %d\n", + "ip_addr=%s flags %x, spa_how %u\n", __func__, rqstp, exid, exid->clname.len, exid->clname.data, addr_str, exid->flags, exid->spa_how); diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index dc39b004bcb4..bb2e83ad61a4 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1468,26 +1468,13 @@ static __be32 nfsd4_decode_ssv_sp_parms(struct nfsd4_compoundargs *argp) return nfs_ok; } -static __be32 -nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, - struct nfsd4_exchange_id *exid) +static __be32 nfsd4_decode_state_protect4_a(struct nfsd4_compoundargs *argp, + struct nfsd4_exchange_id *exid) { - DECODE_HEAD; - int dummy; - - READ_BUF(NFS4_VERIFIER_SIZE); - COPYMEM(exid->verifier.data, NFS4_VERIFIER_SIZE); + __be32 status; - status = nfsd4_decode_opaque(argp, &exid->clname); - if (status) + if (xdr_stream_decode_u32(argp->xdr, &exid->spa_how) < 0) return nfserr_bad_xdr; - - READ_BUF(4); - exid->flags = be32_to_cpup(p++); - - /* Ignore state_protect4_a */ - READ_BUF(4); - exid->spa_how = be32_to_cpup(p++); switch (exid->spa_how) { case SP4_NONE: break; @@ -1506,9 +1493,31 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, return status; break; default: - goto xdr_error; + return nfserr_bad_xdr; } + return nfs_ok; +} + +static __be32 +nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, + struct nfsd4_exchange_id *exid) +{ + DECODE_HEAD; + int dummy; + + status = nfsd4_decode_verifier4(argp, &exid->verifier); + if (status) + return status; + status = nfsd4_decode_opaque(argp, &exid->clname); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &exid->flags) < 0) + return nfserr_bad_xdr; + status = nfsd4_decode_state_protect4_a(argp, exid); + if (status) + return status; + READ_BUF(4); /* nfs_impl_id4 array length */ dummy = be32_to_cpup(p++); diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 6245004a9993..232529bc1b79 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -433,7 +433,7 @@ struct nfsd4_exchange_id { u32 flags; clientid_t clientid; u32 seqid; - int spa_how; + u32 spa_how; u32 spo_must_enforce[3]; u32 spo_must_allow[3]; struct xdr_netobj nii_domain; From patchwork Fri Nov 20 20:38:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922407 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71554C64E69 for ; Fri, 20 Nov 2020 20:39:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2152722201 for ; Fri, 20 Nov 2020 20:39:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lC+NPN13" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731621AbgKTUiw (ORCPT ); Fri, 20 Nov 2020 15:38:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33270 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731606AbgKTUiw (ORCPT ); Fri, 20 Nov 2020 15:38:52 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E8CD7C0613CF for ; Fri, 20 Nov 2020 12:38:51 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id i12so8141096qtj.0 for ; Fri, 20 Nov 2020 12:38:51 -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=nFWEfB5Bp3Oh1ragw37OYASFp46sha0ksjZh9Eof5EM=; b=lC+NPN13EMmUSbCX5hDNq1yiVuGMN9nl2JSaQkrZCK6lXOMEaf6NlkVkzybZua391/ ZOXIlY1/4eOKJeNmvrPGfCOkUu1eh6HCI1xf2TjkI041iCH9waBlqHF286b1HB4Z1LrH nH7R6jORuCgwz8h+3lva1QPgUinG8u5DsKSZPrCqjkR6V8h5EFuGK4oxUj90DKiWeaiH 1D7Un04tBLOEKri1t2B5HnSytViGXQWhSGij2w56/tjGt5kfg8ILs1/Vw3yf5vTTNRLP spFS1HEmsAKr98ON0Q3sqxmzmHpGnfEzKkJHw3Yat8miSeDJDQU5lpDZmkzc4W8BVRKX byew== 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=nFWEfB5Bp3Oh1ragw37OYASFp46sha0ksjZh9Eof5EM=; b=LV5YwJciROp4JT0kOgfahrUWQN99B006+/FFD+KQpN0QzCniCt3SyILrR/Nj2QdpcZ vKY8qk1JRplDlWcRs2asuk2eC8FDHp82TMXNpwTSuknIz3xi7upgKekh4ivf+XLImZDq zEUV0cY7cWQ5io+FaziHFMCrTEGM7jt6ZkM7QuEtwh/kqnY6JNWyseNO7lmOCq6coiZ7 qBQNAcJcnqfjBdOtCVCDZNz2WUrywj8QAdDcd3qcB/xBuI0cAq6GP+ZJX07x7o9OH5py vEQ42FN3C7I4/6aCEXpzLxVShZqRJAnKp+w2AfDUsfXkpvHKgTdlgq5TWzsWAka6PVXG 3D1Q== X-Gm-Message-State: AOAM532Sq81ik+DtXfjQQ9x5tLOe4dlfkRxlJ0CI4Spkml1zkxYdCS18 2PpkZnrIRCZtu9CSXdWoAuoOJS5/1eg= X-Google-Smtp-Source: ABdhPJxLY5V9xy68ehAMsrSYxPGAqcXB04TQptZl9SKaEa7xbIJvlnN5u8sfD1fjvUHBc+JLOjugOA== X-Received: by 2002:ac8:734c:: with SMTP id q12mr7144404qtp.239.1605904730875; Fri, 20 Nov 2020 12:38:50 -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 g143sm2804444qke.102.2020.11.20.12.38.50 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38:50 -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 0AKKcnMB029374 for ; Fri, 20 Nov 2020 20:38:49 GMT Subject: [PATCH v2 057/118] NFSD: Add a helper to decode nfs_impl_id4 From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:49 -0500 Message-ID: <160590472921.1340.11956801625475654595.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for clarity. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 63 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index bb2e83ad61a4..18b41af204a6 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1499,12 +1499,47 @@ static __be32 nfsd4_decode_state_protect4_a(struct nfsd4_compoundargs *argp, return nfs_ok; } +static __be32 +nfsd4_decode_nfs_impl_id4(struct nfsd4_compoundargs *argp, + struct nfsd4_exchange_id *exid) +{ + __be32 status; + u32 count; + + if (xdr_stream_decode_u32(argp->xdr, &count) < 0) + return nfserr_bad_xdr; + switch (count) { + case 0: + break; + case 1: + /* Note that RFC 8881 places no length limit on + * nii_domain, but this implementation permits no + * more than NFS4_OPAQUE_LIMIT bytes */ + status = nfsd4_decode_opaque(argp, &exid->nii_domain); + if (status) + return status; + /* Note that RFC 8881 places no length limit on + * nii_name, but this implementation permits no + * more than NFS4_OPAQUE_LIMIT bytes */ + status = nfsd4_decode_opaque(argp, &exid->nii_name); + if (status) + return status; + status = nfsd4_decode_nfstime4(argp, &exid->nii_time); + if (status) + return status; + break; + default: + return nfserr_bad_xdr; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, struct nfsd4_exchange_id *exid) { - DECODE_HEAD; - int dummy; + __be32 status; status = nfsd4_decode_verifier4(argp, &exid->verifier); if (status) @@ -1517,29 +1552,7 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, status = nfsd4_decode_state_protect4_a(argp, exid); if (status) return status; - - READ_BUF(4); /* nfs_impl_id4 array length */ - dummy = be32_to_cpup(p++); - - if (dummy > 1) - goto xdr_error; - - if (dummy == 1) { - status = nfsd4_decode_opaque(argp, &exid->nii_domain); - if (status) - goto xdr_error; - - /* nii_name */ - status = nfsd4_decode_opaque(argp, &exid->nii_name); - if (status) - goto xdr_error; - - /* nii_date */ - status = nfsd4_decode_time(argp, &exid->nii_time); - if (status) - goto xdr_error; - } - DECODE_TAIL; + return nfsd4_decode_nfs_impl_id4(argp, exid); } static __be32 From patchwork Fri Nov 20 20:38:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922411 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2A346C64E7C for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C650F2223F for ; Fri, 20 Nov 2020 20:39:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Qv3M3sUs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731648AbgKTUi6 (ORCPT ); Fri, 20 Nov 2020 15:38:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731622AbgKTUi5 (ORCPT ); Fri, 20 Nov 2020 15:38:57 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 69CCFC0613CF for ; Fri, 20 Nov 2020 12:38:57 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id i12so8141290qtj.0 for ; Fri, 20 Nov 2020 12:38:57 -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=ERWeQx0b9I504ZY8495XoH+f0EYm6nmNQuxoo4nrlgI=; b=Qv3M3sUs8Et7sHY7V3ei16YplI+pW0Y1jFQfsnbGQMMF5okFMTwuShKQkpMNl5i2sH 5EVs1JuhW3q/IH8uyCWMa+mc+D06U3nW0XsfeRxwcwHp5XfyEFgwnTObcEZZ4ZHNO4w/ 5RFXrTk+xvSaP7/i5PRmB8TSmsSM04Gj/b/g/DbMB1PuAkDB0cYnTiSEamo7R8RfiOpU f6rPAahtqGWBcFTAdC+fPvQahsYOOTww8iKUP5fAEaMfzisEtv0wgan4S25fucXZwXS4 FazydJMCnoE3alIUmXmxzk77vkijqoZ9+w057SjLk9Oo7MwUyV9HlHL8igVo7JQKg0UF 0MKw== 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=ERWeQx0b9I504ZY8495XoH+f0EYm6nmNQuxoo4nrlgI=; b=IoEDYyMensS6xU5xNJvkjIoajGSWLSbNJwmX2CNomFdHNCjVTzQuJCMFvmrb1Bx436 W5dY+vdxig/UDoktuLx2PEjF8YwTvdvDpvgXK+U9EPMYWgaOT46TIbQPLC2dzgzIwuNM SRlUiJLhBN1bOpM3EgPP99X2w3BCmLt7DRQOXWED75ctGnSs+KzsHNuYxVfGYn8ZEJgv SaXTlsVo6tWw3cmZl147DZmE8aNPMkize17wBFv4gQ2dpp+zUmNl6UtQvGfMtA0qHJlp BO95321nSEP5RNEF/zgrq3DhvBeSVMI2AQJa8Xyoy+G0OsO17NLDT1NuuztV+NE1hVld 6xSQ== X-Gm-Message-State: AOAM532s+08Leyq1EzJj59mTKWwd0X1PZKLg2/aJPJ3xhJOb/7PfYEZi XhD7hyg8MuizogNJQ3Ti3nrwaWlwAng= X-Google-Smtp-Source: ABdhPJyc+GLD4SXBMIt+qO9T6BUx2nRAE/pVaaoJsX36hNiyDTQptFfx4JB8eCI/rpgtNJ566ocqrg== X-Received: by 2002:ac8:6750:: with SMTP id n16mr18110408qtp.362.1605904736360; Fri, 20 Nov 2020 12:38:56 -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 n125sm2948520qkd.85.2020.11.20.12.38.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:38: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 0AKKcsMx029377 for ; Fri, 20 Nov 2020 20:38:54 GMT Subject: [PATCH v2 058/118] NFSD: Add a helper to decode channel_attrs4 From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:54 -0500 Message-ID: <160590473454.1340.270725180136028565.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org De-duplicate some code. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 71 ++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 18b41af204a6..e2b0895c2a32 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1555,6 +1555,38 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, return nfsd4_decode_nfs_impl_id4(argp, exid); } +static __be32 +nfsd4_decode_channel_attrs4(struct nfsd4_compoundargs *argp, + struct nfsd4_channel_attrs *ca) +{ + __be32 *p; + + p = xdr_inline_decode(argp->xdr, XDR_UNIT * 7); + if (!p) + return nfserr_bad_xdr; + + /* headerpadsz is ignored */ + p++; + ca->maxreq_sz = be32_to_cpup(p++); + ca->maxresp_sz = be32_to_cpup(p++); + ca->maxresp_cached = be32_to_cpup(p++); + ca->maxops = be32_to_cpup(p++); + ca->maxreqs = be32_to_cpup(p++); + ca->nr_rdma_attrs = be32_to_cpup(p); + switch (ca->nr_rdma_attrs) { + case 0: + break; + case 1: + if (xdr_stream_decode_u32(argp->xdr, &ca->rdma_attrs) < 0) + return nfserr_bad_xdr; + break; + default: + return nfserr_bad_xdr; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, struct nfsd4_create_session *sess) @@ -1566,39 +1598,12 @@ nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, sess->seqid = be32_to_cpup(p++); sess->flags = be32_to_cpup(p++); - /* Fore channel attrs */ - READ_BUF(28); - p++; /* headerpadsz is always 0 */ - sess->fore_channel.maxreq_sz = be32_to_cpup(p++); - sess->fore_channel.maxresp_sz = be32_to_cpup(p++); - sess->fore_channel.maxresp_cached = be32_to_cpup(p++); - sess->fore_channel.maxops = be32_to_cpup(p++); - sess->fore_channel.maxreqs = be32_to_cpup(p++); - sess->fore_channel.nr_rdma_attrs = be32_to_cpup(p++); - if (sess->fore_channel.nr_rdma_attrs == 1) { - READ_BUF(4); - sess->fore_channel.rdma_attrs = be32_to_cpup(p++); - } else if (sess->fore_channel.nr_rdma_attrs > 1) { - dprintk("Too many fore channel attr bitmaps!\n"); - goto xdr_error; - } - - /* Back channel attrs */ - READ_BUF(28); - p++; /* headerpadsz is always 0 */ - sess->back_channel.maxreq_sz = be32_to_cpup(p++); - sess->back_channel.maxresp_sz = be32_to_cpup(p++); - sess->back_channel.maxresp_cached = be32_to_cpup(p++); - sess->back_channel.maxops = be32_to_cpup(p++); - sess->back_channel.maxreqs = be32_to_cpup(p++); - sess->back_channel.nr_rdma_attrs = be32_to_cpup(p++); - if (sess->back_channel.nr_rdma_attrs == 1) { - READ_BUF(4); - sess->back_channel.rdma_attrs = be32_to_cpup(p++); - } else if (sess->back_channel.nr_rdma_attrs > 1) { - dprintk("Too many back channel attr bitmaps!\n"); - goto xdr_error; - } + status = nfsd4_decode_channel_attrs4(argp, &sess->fore_channel); + if (status) + return status; + status = nfsd4_decode_channel_attrs4(argp, &sess->back_channel); + if (status) + return status; READ_BUF(4); sess->callback_prog = be32_to_cpup(p++); From patchwork Fri Nov 20 20:38:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922409 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 52393C2D0E4 for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0D1E422201 for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UkTrVOvg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731649AbgKTUjD (ORCPT ); Fri, 20 Nov 2020 15:39:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33308 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731622AbgKTUjC (ORCPT ); Fri, 20 Nov 2020 15:39:02 -0500 Received: from mail-qv1-xf42.google.com (mail-qv1-xf42.google.com [IPv6:2607:f8b0:4864:20::f42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC50CC0613CF for ; Fri, 20 Nov 2020 12:39:02 -0800 (PST) Received: by mail-qv1-xf42.google.com with SMTP id j18so803220qvl.7 for ; Fri, 20 Nov 2020 12:39:02 -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=00+T3huLM22eOSssufROExKLfDYH3VdGFxhADh+9pnU=; b=UkTrVOvgdHOHAYm2Q0qbTLfnKdgPytSwAOeTuq7Ag7VLW+DnApi8AlJL4crK4CRTJo XFDIPQIvA4YmGMnclHI6TmYwBv28132NJAEei9fXkjUo3bmRVNCKEIthRDjeU0Ih5Xar YKxwgG2g+2N8O/CL21pfsP96qMbm7B8tufRsXDmQ4Lx/gOy3EWK6XdGyB0wNvF5ZkyAX cb8MsWfHLVC+bIPLIGyhWtrnOMc0K14p/iCb/UOaviQd7Jwnxn/pRv0lsX8iGoiA5ENA /1vl9jAMk89gN/tD6pDttkgHroOOVLGZlVIEEgN4uLIWLfMVzP9UQ2kPHyMaRvDaCOwT H0vg== 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=00+T3huLM22eOSssufROExKLfDYH3VdGFxhADh+9pnU=; b=q0FtJoQKC4TToEJFVTme+5SH+ViX9k0pgI2qmKaCFWN70dCHzuN5KY7d27XnVw0NSR nDBMoITFyovSfO6jXITFFZcvNrr9cShhkHVXGHz7W/0PvMC2pncrpHs2rFUQnoi+5RI9 mY3tCd7KQ2yCeGS8w05a4GEsy3MRG8aRYxFoniUOvfeKycnuhdLRUQx/Blw/fqec3my5 z8LowerLcjVxbnI8pBXLe9ORLs12YIx+C7rGltzbe8/PKvdXL/J59TrJfsWNOXj/90eu 798Ht3T0yAfc2ctB4ysj8pjOlGGDecFMtDV/KFHBF6bGjcnLesIfNNi7I18XcXGGDjU9 CUsA== X-Gm-Message-State: AOAM5315zXsOeXZZRWRzUz2MJSCfXc9KOQeIOc2Sg++BtlyJHkcFH1Hd 1qvYdjM/xsI21gSzbPP2+vkwlBdfmE4= X-Google-Smtp-Source: ABdhPJwmPxck9ozY7U+RGeyvlbZMOOEXBpZeUFiqtxzuIyHXcFVztbOt1jBeWiRAtdvTxuWky4PQhA== X-Received: by 2002:ad4:5b82:: with SMTP id 2mr18186166qvp.28.1605904741641; Fri, 20 Nov 2020 12:39:01 -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 u24sm2955772qtb.33.2020.11.20.12.39.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:01 -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 0AKKcxgp029380 for ; Fri, 20 Nov 2020 20:39:00 GMT Subject: [PATCH v2 059/118] NFSD: Replace READ* macros in nfsd4_decode_create_session() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:38:59 -0500 Message-ID: <160590473992.1340.1671446268080011381.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index e2b0895c2a32..38a54bd9f1cb 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1591,24 +1591,28 @@ static __be32 nfsd4_decode_create_session(struct nfsd4_compoundargs *argp, struct nfsd4_create_session *sess) { - DECODE_HEAD; - - READ_BUF(16); - COPYMEM(&sess->clientid, 8); - sess->seqid = be32_to_cpup(p++); - sess->flags = be32_to_cpup(p++); + __be32 status; + status = nfsd4_decode_clientid4(argp, &sess->clientid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &sess->seqid) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &sess->flags) < 0) + return nfserr_bad_xdr; status = nfsd4_decode_channel_attrs4(argp, &sess->fore_channel); if (status) return status; status = nfsd4_decode_channel_attrs4(argp, &sess->back_channel); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &sess->callback_prog) < 0) + return nfserr_bad_xdr; + status = nfsd4_decode_cb_sec(argp, &sess->cb_sec); if (status) return status; - READ_BUF(4); - sess->callback_prog = be32_to_cpup(p++); - nfsd4_decode_cb_sec(argp, &sess->cb_sec); - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:39:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922413 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACB7DC56202 for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 482B72223F for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DQhqjWLf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729927AbgKTUjI (ORCPT ); Fri, 20 Nov 2020 15:39:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731622AbgKTUjI (ORCPT ); Fri, 20 Nov 2020 15:39:08 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A028C0613CF for ; Fri, 20 Nov 2020 12:39:08 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id p12so8101961qtp.7 for ; Fri, 20 Nov 2020 12:39:08 -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=SrIez6Hwmwv/31o9/vG82aCR8FDLLWLxST6fDk9WhkM=; b=DQhqjWLfBT3R2Lq9CtSeS/G0WGuHV84G9DwlqVU9Wb1uoEKWkWHP4IfATVUTu9wTiq GTQXIrkSUdVSpcgwzJ9mQkvghQlH0BbZyL59XMPJWnLpP7aKnXvJmFBwdNlAeen2Y/1v 4RaKaIBoEf4tttWRnOI4GZbAVSre/9hCthlcuhXgiWlgnLXNPAMGo+2P5xyRDibbt8Ct Hs6j0XVxdm+jND7xSE2ZKavrDazEock3jypnNolxWyluJf6EZvQx4f6NaGYM8KHMdfcb 2x15Ve/S+iYltJEoJbi4qI3iDzBe93JkzKlsV+yG6tb7quvU5eTes42Bi/Oyi6T300yH 3XwQ== 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=SrIez6Hwmwv/31o9/vG82aCR8FDLLWLxST6fDk9WhkM=; b=m5AdRmDOl5lvm4l7ySMqn/bG0YoCEMYgkTHqw4chmCBHUtMBgIcMjcPmBQMYHVbkK2 6ZZuYROEW0Tn4qafFgZ6nwBx+4rEq7E6IYtsnHoxNigIL1AH48DOTyUsNSGmfYAAXgBP ZDGFzv3w+0K1XMOyV2/0ryZng+gr7O8QoVTW/f+DSMOhb/q4QMGflcaaQBCddPUqvFeQ kC/eNbxtJgNYyY+o26JMxx3vmtCSmJLsKHvL2K7NqL4tqyxSlYPhegQITpcGVtI2nxoc 0b9QKACeuZoouD6/3mdEvkbCydSkqj5vbiF34oD+sCNr9GaLEFfzfP3bvriI+Yk1ec8R NGVQ== X-Gm-Message-State: AOAM533n6PWCiHPbeRzJmCI8ikns1+qea6PtPJJ7i0fxJ5D2VR6KJZKx dPkuAtPkHGhNs17tCQmEaAnQhkZ2yYI= X-Google-Smtp-Source: ABdhPJw4kAi2ERXrJJWgil0XTIvR0HPENDha3oWImpaFFWp3PA7UhS6A5AJtCc/0a8b4ThqSEEJDBQ== X-Received: by 2002:ac8:7316:: with SMTP id x22mr18127296qto.386.1605904747020; Fri, 20 Nov 2020 12:39:07 -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 j124sm2874340qkf.113.2020.11.20.12.39.06 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:06 -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 0AKKd5NO029383 for ; Fri, 20 Nov 2020 20:39:05 GMT Subject: [PATCH v2 060/118] NFSD: Replace READ* macros in nfsd4_decode_destroy_session() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:05 -0500 Message-ID: <160590474527.1340.14432355167883542373.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 38a54bd9f1cb..9c17cf541e8c 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1619,11 +1619,7 @@ static __be32 nfsd4_decode_destroy_session(struct nfsd4_compoundargs *argp, struct nfsd4_destroy_session *destroy_session) { - DECODE_HEAD; - READ_BUF(NFS4_MAX_SESSIONID_LEN); - COPYMEM(destroy_session->sessionid.data, NFS4_MAX_SESSIONID_LEN); - - DECODE_TAIL; + return nfsd4_decode_sessionid(argp, &destroy_session->sessionid); } static __be32 From patchwork Fri Nov 20 20:39:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922419 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0EECC64E7A for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 86D1022201 for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="V6qVIZXP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731652AbgKTUjO (ORCPT ); Fri, 20 Nov 2020 15:39:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731650AbgKTUjN (ORCPT ); Fri, 20 Nov 2020 15:39:13 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75832C0613CF for ; Fri, 20 Nov 2020 12:39:13 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id m65so8077161qte.11 for ; Fri, 20 Nov 2020 12:39:13 -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=mTPqBtLQH/dArrbDQ4IWLAGsko/D9O5IM2XaFqZPnWA=; b=V6qVIZXPMqXlKkJrrssTv40MnI40jpKjigr1iweXSvVx2HryBwi4n3W223lDj/FJaX f8I3NO41T611Ynq7UKrJjtl1d+kOSP3nh9XFBJbwZ1f2pBH/aPBq/4azVfXcNroRurj/ tmdfN7QZ6byxpoiyGgMOXgIIJBFcl1G6atL7thFJwOVEoMOvYzDNpdW1mJ8cGTgWB8CH K574sGgWzyA0KRvNvGp/vWaJORuHKYtfA+kduK/CL4Tjqa7d/oFW5LK1StCtgfnglPoe br9mdJx87sofx77MhSGo9WodWFe7QTV3eIg1R+aC51ipxGNs6cu1dDP69p2YUAMKcslK ccuQ== 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=mTPqBtLQH/dArrbDQ4IWLAGsko/D9O5IM2XaFqZPnWA=; b=B16xeofIpDlhFrvFbPNe6D9kVudksZrZcRx9231QyNMIAARpSmJE2dDv5+w9x2erD7 poaWBz6t3MpCxlivTL8EmNaAWAc8hqzLJGXsgxSSGRB/lLJGTQmG7sozBEutTppPJ5ez O+3g4FZjxpuilSDFPsP0OFa3tuWcJ1GEZMHlULLFqUBk5ZbM/3BLSV9mpi/cCfPMAceC QV6TLSpocPoFlg+fzvQ0bcGFB4ioOH57lfiPnNlCPYPjOqtEYcJKhFBZkQ6kiLI0er2J PZJBBwS6hE1lpebNv4rUlXkpdv+y1t9iGQfGRnAvHABAOxeDPOIhp2u+byyVr7bNMFbG gG0g== X-Gm-Message-State: AOAM533ypzwzCOGnuR925TaR+lM7rqBolDfPegzxSb+H/tRzZuycj2RU /FajRrdhBH+PHEOawdNl4xjXe/Dlaig= X-Google-Smtp-Source: ABdhPJy54WTNRz8QeWgMcAJipITH930yC+4b6ElknyxnBUGFpcfdEMeuB8tX+ebyna6IMIfH9kHMCw== X-Received: by 2002:aed:2051:: with SMTP id 75mr17156783qta.332.1605904752384; Fri, 20 Nov 2020 12:39:12 -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 e10sm2741321qkn.126.2020.11.20.12.39.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:11 -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 0AKKdAG5029386 for ; Fri, 20 Nov 2020 20:39:10 GMT Subject: [PATCH v2 061/118] NFSD: Replace READ* macros in nfsd4_decode_free_stateid() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:10 -0500 Message-ID: <160590475062.1340.1655685411758152083.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 9c17cf541e8c..1fb79a597b47 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1626,13 +1626,7 @@ static __be32 nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_free_stateid *free_stateid) { - DECODE_HEAD; - - READ_BUF(sizeof(stateid_t)); - free_stateid->fr_stateid.si_generation = be32_to_cpup(p++); - COPYMEM(&free_stateid->fr_stateid.si_opaque, sizeof(stateid_opaque_t)); - - DECODE_TAIL; + return nfsd4_decode_stateid4(argp, &free_stateid->fr_stateid); } static __be32 From patchwork Fri Nov 20 20:39:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922415 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 17F45C64E7D for ; Fri, 20 Nov 2020 20:39:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C25842223F for ; Fri, 20 Nov 2020 20:39:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="d7YTcPNM" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731660AbgKTUjU (ORCPT ); Fri, 20 Nov 2020 15:39:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731653AbgKTUjU (ORCPT ); Fri, 20 Nov 2020 15:39:20 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1924C0613CF for ; Fri, 20 Nov 2020 12:39:18 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id f15so4615295qto.13 for ; Fri, 20 Nov 2020 12:39:18 -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=GYVthZSprqOe/r4UqZp7VHPUMhkUJ2WpLAF5voFcnfA=; b=d7YTcPNMtJQUaqhKvjsBL4v5y557YAc/zrVKT+WZIYRTcNm35wS2XHpUtbyUVYBA5A Z/HE9IzKm6nfnkO4+Ef8Xm7/SasKUQBTVVB/htpOLrYqyV4g9JctO87FrmI0X9w5DC07 5+6zmjiewg+uK8zkCYN1WZ4wnHswESpBU1rNGxDSMDdm4aTBEejW27ay5UuPscvprj96 77ycO+pHZWGPP4aLH178PHQEPBMuvewTp20EJXhydKZ2de/+/CNKHcddmoBvTWIqvzGx x62U3I8v/JQKd/XUggoNr9ArzTIHs/WcwoXYG206ulAboGqqXYhASmTtoeiJKjwfrCwB Ibtw== 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=GYVthZSprqOe/r4UqZp7VHPUMhkUJ2WpLAF5voFcnfA=; b=FbIt1FUn05c346NFmo3nfesfX9FJCaYg+sIJwqFAzIkVPaVzPbqYiTCHT97pQ14qjL fe4rJR0k3SO7cvEuR1UEVN8P00HWVPsw1NBHYtuKJw6tyXmHF1e7PhX7142F4b3CIDLL y7R/5xCdg6izFaih7oqAlOHjREOoOXuCc323eGSsBn+Zo990spOVscW4l0xzGWKPfDg9 UyyZPBG6qmY8+aDbbSFwV3SHpDdn1ann3j71wqx6p0NAs0sM3D6L87gDFjwxdRhhjU1y MxfpdZOTAGKh7MBwBoqKX/Pa77peLm7BLfCvlP1IRDp1jtJ9L6CLAMMfDtQ2AjOvM1yY S7YQ== X-Gm-Message-State: AOAM533MlVmSopq8olQnn+d7dYdtuo/iyIkI54hNZtff+hzxRMYU/m9J 3ukKBI2C2wBRVm/5d6pVfaP6ftK8pac= X-Google-Smtp-Source: ABdhPJzURy4UkLgAOHGBJmBTc4banyXEyRDt3ccLBxXDxTYfSRUF7plTvCUov3TJ9QoPzEl2lNFcHg== X-Received: by 2002:aed:38c8:: with SMTP id k66mr17674329qte.385.1605904757679; Fri, 20 Nov 2020 12:39:17 -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 r19sm2693407qtm.4.2020.11.20.12.39.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:17 -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 0AKKdGlQ029389 for ; Fri, 20 Nov 2020 20:39:16 GMT Subject: [PATCH v2 062/118] NFSD: Replace READ* macros in nfsd4_decode_getdeviceinfo() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:16 -0500 Message-ID: <160590475599.1340.3473334728686022951.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 50 +++++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 1fb79a597b47..04dfb578bec8 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -583,6 +583,21 @@ nfsd4_decode_stateid4(struct nfsd4_compoundargs *argp, stateid_t *sid) return nfs_ok; } +#ifdef CONFIG_NFSD_PNFS +static __be32 +nfsd4_decode_deviceid4(struct nfsd4_compoundargs *argp, + struct nfsd4_deviceid *devid) +{ + __be32 *p; + + p = xdr_inline_decode(argp->xdr, NFS4_DEVICEID4_SIZE); + if (!p) + return nfserr_bad_xdr; + memcpy(devid, p, sizeof(*devid)); + return nfs_ok; +} +#endif /* CONFIG_NFSD_PNFS */ + static __be32 nfsd4_decode_sessionid(struct nfsd4_compoundargs *argp, struct nfs4_sessionid *sessionid) @@ -1706,27 +1721,20 @@ static __be32 nfsd4_decode_getdeviceinfo(struct nfsd4_compoundargs *argp, struct nfsd4_getdeviceinfo *gdev) { - DECODE_HEAD; - u32 num, i; - - READ_BUF(sizeof(struct nfsd4_deviceid) + 3 * 4); - COPYMEM(&gdev->gd_devid, sizeof(struct nfsd4_deviceid)); - gdev->gd_layout_type = be32_to_cpup(p++); - gdev->gd_maxcount = be32_to_cpup(p++); - num = be32_to_cpup(p++); - if (num) { - if (num > 1000) - goto xdr_error; - READ_BUF(4 * num); - gdev->gd_notify_types = be32_to_cpup(p++); - for (i = 1; i < num; i++) { - if (be32_to_cpup(p++)) { - status = nfserr_inval; - goto out; - } - } - } - DECODE_TAIL; + __be32 status; + + status = nfsd4_decode_deviceid4(argp, &gdev->gd_devid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &gdev->gd_layout_type) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &gdev->gd_maxcount) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_uint32_array(argp->xdr, + &gdev->gd_notify_types, 1) < 0) + return nfserr_bad_xdr; + + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:39:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922417 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65784C63777 for ; Fri, 20 Nov 2020 20:39:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0AA3B22201 for ; Fri, 20 Nov 2020 20:39:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="pHXvI2bv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731401AbgKTUjY (ORCPT ); Fri, 20 Nov 2020 15:39:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731415AbgKTUjY (ORCPT ); Fri, 20 Nov 2020 15:39:24 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5F6EC0613CF for ; Fri, 20 Nov 2020 12:39:23 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id l7so1818194qtp.8 for ; Fri, 20 Nov 2020 12:39:23 -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=MU+l/To7ZiO+Ch0zE8OE45GD7x+7KlDKAeeFOnZT2+A=; b=pHXvI2bv0oY11y/gmkWXd6EuhDSxmfLHTu3oMh3xCAtb5yn5b/+wvzDuzapxaHPcqs YFNb5JjxU4Y8/CccHP3r2fbZ3bgh9Hk4TglYwvb3uuFWoDMcD13Mv7EYqlXjEVP6elfe ALN/l1W+CH46CG7C4xm7jgMHh/IaA3VHfYLQJH2Ui/DbdjjwURtX583+WLeoJD260pXB eUSw17ZZTEMQoBTdw8qbg1WI54BsbXut1ltpieQLJI6JwOHItGX8zY07eoUFMp0pCq3V 0fXwGHLID1ckKndZZNR4wvcMsnYdxPkSkBWEOmU+CLtmuQCFwAzU1s+A9AQ6a9R2Da63 /+hA== 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=MU+l/To7ZiO+Ch0zE8OE45GD7x+7KlDKAeeFOnZT2+A=; b=rRxoa7JXHJ9A5NQKiLO6twccazbVTOZ6/87EBklkJk8NMoRZDlBdF+85zmaOd2fEXD qXYC3smRcdgV6m//bpQRio41437IhM+hMLKTAsm3astaTnji2ELnIy07Uur5wsDZulQb DCYN+lEpzOshz4j+x2o8slUIRQqWJvCJSRkBpF+wL0WpL/xAE2vKmC71pu4lqpsnemdg VKsDaviVXYJ6FpLF9vxS/GiDSW6z/Dhu7l2MYFaj5YHuNvLoObC6HcD165FsiF0HpxBx 3PEGvkU1QXykFAnZc7mb8E4hmW5sI7m8gpJpg+owYo+qTDQ6Gv2/Cc+u7jXu/w1SbpcS zhiw== X-Gm-Message-State: AOAM5326uqxPu/oPsGuS0GCZw61JJ1FDC5YOv+wrigqZMJuT0Ye3MSim 9XGYttx9LftoHUuLyUdIlRjZ8vjs6nc= X-Google-Smtp-Source: ABdhPJzWwSiLTEdycX/GEWHM8gD6c8aERF64CM3YuA84vcNMSBWAEOMvO2MSTTrFke6PywerTWw1eA== X-Received: by 2002:ac8:490f:: with SMTP id e15mr17493970qtq.155.1605904762843; Fri, 20 Nov 2020 12:39:22 -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 q31sm2154282qtd.23.2020.11.20.12.39.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:22 -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 0AKKdL2n029392 for ; Fri, 20 Nov 2020 20:39:21 GMT Subject: [PATCH v2 063/118] NFSD: Replace READ* macros in nfsd4_decode_layoutcommit() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:21 -0500 Message-ID: <160590476131.1340.13315793122233336452.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 119 +++++++++++++++++++++++++---------------------------- 1 file changed, 57 insertions(+), 62 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 04dfb578bec8..2c75e5d3b2f2 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -272,20 +272,6 @@ nfsd4_decode_component4(struct nfsd4_compoundargs *argp, char **namp, u32 *lenp) return nfs_ok; } -static __be32 -nfsd4_decode_time(struct nfsd4_compoundargs *argp, struct timespec64 *tv) -{ - DECODE_HEAD; - - READ_BUF(12); - p = xdr_decode_hyper(p, &tv->tv_sec); - tv->tv_nsec = be32_to_cpup(p++); - if (tv->tv_nsec >= (u32)1000000000) - return nfserr_inval; - - DECODE_TAIL; -} - static __be32 nfsd4_decode_nfstime4(struct nfsd4_compoundargs *argp, struct timespec64 *tv) { @@ -596,6 +582,29 @@ nfsd4_decode_deviceid4(struct nfsd4_compoundargs *argp, memcpy(devid, p, sizeof(*devid)); return nfs_ok; } + +static __be32 +nfsd4_decode_layoutupdate4(struct nfsd4_compoundargs *argp, + struct nfsd4_layoutcommit *lcp) +{ + if (xdr_stream_decode_u32(argp->xdr, &lcp->lc_layout_type) < 0) + return nfserr_bad_xdr; + if (lcp->lc_layout_type < LAYOUT_NFSV4_1_FILES) + return nfserr_bad_xdr; + if (lcp->lc_layout_type >= LAYOUT_TYPE_MAX) + return nfserr_bad_xdr; + + if (xdr_stream_decode_u32(argp->xdr, &lcp->lc_up_len) < 0) + return nfserr_bad_xdr; + if (lcp->lc_up_len > 0) { + lcp->lc_up_layout = xdr_inline_decode(argp->xdr, lcp->lc_up_len); + if (!lcp->lc_up_layout) + return nfserr_bad_xdr; + } + + return nfs_ok; +} + #endif /* CONFIG_NFSD_PNFS */ static __be32 @@ -1737,6 +1746,40 @@ nfsd4_decode_getdeviceinfo(struct nfsd4_compoundargs *argp, return nfs_ok; } +static __be32 nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, + struct nfsd4_layoutcommit *lcp) +{ + __be32 *p, status; + + if (xdr_stream_decode_u64(argp->xdr, &lcp->lc_seg.offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lcp->lc_seg.length) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_bool(argp->xdr, &lcp->lc_reclaim) < 0) + return nfserr_bad_xdr; + status = nfsd4_decode_stateid4(argp, &lcp->lc_sid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &lcp->lc_newoffset) < 0) + return nfserr_bad_xdr; + if (lcp->lc_newoffset) { + if (xdr_stream_decode_u64(argp->xdr, &lcp->lc_last_wr) < 0) + return nfserr_bad_xdr; + } else + lcp->lc_last_wr = 0; + p = xdr_inline_decode(argp->xdr, XDR_UNIT); + if (!p) + return nfserr_bad_xdr; + if (xdr_item_is_present(p)) { + status = nfsd4_decode_nfstime4(argp, &lcp->lc_mtime); + if (status) + return status; + } else { + lcp->lc_mtime.tv_nsec = UTIME_NOW; + } + return nfsd4_decode_layoutupdate4(argp, lcp); +} + static __be32 nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, struct nfsd4_layoutget *lgp) @@ -1761,54 +1804,6 @@ nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, DECODE_TAIL; } -static __be32 -nfsd4_decode_layoutcommit(struct nfsd4_compoundargs *argp, - struct nfsd4_layoutcommit *lcp) -{ - DECODE_HEAD; - u32 timechange; - - READ_BUF(20); - p = xdr_decode_hyper(p, &lcp->lc_seg.offset); - p = xdr_decode_hyper(p, &lcp->lc_seg.length); - lcp->lc_reclaim = be32_to_cpup(p++); - - status = nfsd4_decode_stateid4(argp, &lcp->lc_sid); - if (status) - return status; - - READ_BUF(4); - lcp->lc_newoffset = be32_to_cpup(p++); - if (lcp->lc_newoffset) { - READ_BUF(8); - p = xdr_decode_hyper(p, &lcp->lc_last_wr); - } else - lcp->lc_last_wr = 0; - READ_BUF(4); - timechange = be32_to_cpup(p++); - if (timechange) { - status = nfsd4_decode_time(argp, &lcp->lc_mtime); - if (status) - return status; - } else { - lcp->lc_mtime.tv_nsec = UTIME_NOW; - } - READ_BUF(8); - lcp->lc_layout_type = be32_to_cpup(p++); - - /* - * Save the layout update in XDR format and let the layout driver deal - * with it later. - */ - lcp->lc_up_len = be32_to_cpup(p++); - if (lcp->lc_up_len > 0) { - READ_BUF(lcp->lc_up_len); - READMEM(lcp->lc_up_layout, lcp->lc_up_len); - } - - DECODE_TAIL; -} - static __be32 nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, struct nfsd4_layoutreturn *lrp) From patchwork Fri Nov 20 20:39:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922421 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9361C2D0E4 for ; Fri, 20 Nov 2020 20:39:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4D17C22201 for ; Fri, 20 Nov 2020 20:39:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nSoOECqp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731337AbgKTUj3 (ORCPT ); Fri, 20 Nov 2020 15:39:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33384 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730886AbgKTUj3 (ORCPT ); Fri, 20 Nov 2020 15:39:29 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B209C0613CF for ; Fri, 20 Nov 2020 12:39:29 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id z24so6102461qto.3 for ; Fri, 20 Nov 2020 12:39:29 -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=XXP39M2qf0dfgfcT6WEIO6FnUSsetZgutTLO/TUaYwc=; b=nSoOECqpBIw1JyLjSo5J2Au4NjVVaOFqPyowLgpdX6HthEw+mzwh2ReIQU1px56tlk dlt/pLnu8ir2fjfNiA1gCfugH5vnNmz5MOM0+tAxkqEN4dzPk4zsUsOClhprlvlNrF5G 0K4dbJM/s87+tTfhPGukKsJGDQvb+JadHhlObTY27DXxTAAn8KCW62GcUDh0siGjHK9P MWfC8rn9Rfmhb/fF+a+dT/kUo0eZncscV9vPFwOY7CXDReWjxu3j5TO2JdCB9Yb/b4+F faevD1QFMFaAa9MFelkxLAeHLahQp7FxJg1F8xvCRWVZw8ZAS8J7OBoGEHnh/H6q0Tm6 YYDQ== 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=XXP39M2qf0dfgfcT6WEIO6FnUSsetZgutTLO/TUaYwc=; b=ccmPumHLB0Br81zOPz0IiCbwAD8Vre5Oz0WEAmzDzAWF4wYE8BMwtH72r6oX71HkWU ZAdY1CDoeo4AnRnAmq35DhiQFCVEXyPuWyuK2BI0/DlyeZtl/YxnGeVea8wnmT2uW7BZ nWdn2BIAi5vQuec3epaRzvM8EXrrPciHKdxjALMT0Vj5IQRaKv9YV5LdbFmfC8wukwpO zGc1eyCit/l3dGzoIJ5nmWyiiL/TdMl1sfMYPgmzsO8K1+njoBgpEf3rfgyU6RBc4s4X BicgDiLyWB7WLnKRKPd0wMrRGqWjeGGYrgtsqG+ppmGhB6ZJxinff4YLqPmO2QZWuttG hwZA== X-Gm-Message-State: AOAM530txGabBNfJ/MCNZ1Odqaq35RyIeR20QbLbfEXvDI/GPSe9aX0t 9G6Tg9JJ4GL7sqsW3WVHc0ydcZodSQ0= X-Google-Smtp-Source: ABdhPJzGsnXXoD/xRwVOc1mgC0YX5sSQp+TJoh+zWTT/x+gwtuShic10eMWG4Hpm5noBZ2pw6Qxlag== X-Received: by 2002:ac8:4e14:: with SMTP id c20mr18519334qtw.5.1605904768148; Fri, 20 Nov 2020 12:39:28 -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 c1sm2786257qkd.74.2020.11.20.12.39.27 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:27 -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 0AKKdQQ2029395 for ; Fri, 20 Nov 2020 20:39:26 GMT Subject: [PATCH v2 064/118] NFSD: Replace READ* macros in nfsd4_decode_layoutget() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:26 -0500 Message-ID: <160590476644.1340.18380578618262852515.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 2c75e5d3b2f2..8add9b5242f1 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1784,24 +1784,27 @@ static __be32 nfsd4_decode_layoutget(struct nfsd4_compoundargs *argp, struct nfsd4_layoutget *lgp) { - DECODE_HEAD; - - READ_BUF(36); - lgp->lg_signal = be32_to_cpup(p++); - lgp->lg_layout_type = be32_to_cpup(p++); - lgp->lg_seg.iomode = be32_to_cpup(p++); - p = xdr_decode_hyper(p, &lgp->lg_seg.offset); - p = xdr_decode_hyper(p, &lgp->lg_seg.length); - p = xdr_decode_hyper(p, &lgp->lg_minlength); + __be32 status; + if (xdr_stream_decode_u32(argp->xdr, &lgp->lg_signal) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &lgp->lg_layout_type) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &lgp->lg_seg.iomode) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lgp->lg_seg.offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lgp->lg_seg.length) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lgp->lg_minlength) < 0) + return nfserr_bad_xdr; status = nfsd4_decode_stateid4(argp, &lgp->lg_sid); if (status) return status; + if (xdr_stream_decode_u32(argp->xdr, &lgp->lg_maxcount) < 0) + return nfserr_bad_xdr; - READ_BUF(4); - lgp->lg_maxcount = be32_to_cpup(p++); - - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:39:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922423 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0F521C2D0E4 for ; Fri, 20 Nov 2020 20:39:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A9AA422201 for ; Fri, 20 Nov 2020 20:39:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cIKc/ueZ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731415AbgKTUjf (ORCPT ); Fri, 20 Nov 2020 15:39:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33402 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730886AbgKTUje (ORCPT ); Fri, 20 Nov 2020 15:39:34 -0500 Received: from mail-qv1-xf42.google.com (mail-qv1-xf42.google.com [IPv6:2607:f8b0:4864:20::f42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87F39C0613CF for ; Fri, 20 Nov 2020 12:39:34 -0800 (PST) Received: by mail-qv1-xf42.google.com with SMTP id e14so5332979qve.3 for ; Fri, 20 Nov 2020 12:39:34 -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=UMjN38ndoKFHRcaUc3cGj/K26T9bzxmJKlQVRgKnIfY=; b=cIKc/ueZaZCh1lLEt+a/2FpNZS7n7NMvDumo2WbtQ4HrFS6uKL6Pq0RQGiaG27samK ZJtXw6VpQkTQCF44hdMGaeZGFS06MuIqKrOenF+949jbU+AGfUqLREwuG0+xf+F+pyxV INuF2wDdSvVYfubxRmTRdZYI7SFKCEN7vJShIc0gRNrGCmiDNJxQ0czaQoVMP6pQ4fZf rOBd+IAMT0+RjxWP7NTmu29mdTiqZ+3Mt08S5iYDhKcQ3sOhoK1Gr3BZNMe0r9BTThe+ CY8DvVE7Pp9IJtsv9P5dDLHEbDAALk5Kk8nQTLhLxugRAX4T6nDaRF2Ii1I5m7uVMFnI JhKA== 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=UMjN38ndoKFHRcaUc3cGj/K26T9bzxmJKlQVRgKnIfY=; b=izeV0oRIU4EzuuhIvA1m6mNseq8GOwRNxYzgFpzbjzS4GXCyPuRXTWiGU2LfZKCy+u SSX9PqywQYd0lcdsPlDRTVa8DtbnY4Qv5eJEh3gWIL3wUQjKmQhrczLp2q/mIseKfjgS uRFigKqTnk2+blwrsXX+CFxi2DefgDSt+3oBFSaAbSendvaIF+7yhb500JvJLuL8MZVU 1zLMCBvHuYlBCi3bQB0EX8kv5KC2afyAu5qML6BnVPwD8QnPdPMXgFG+Xctm1XqsU8el csjc6Om1qnHG1WNdFgJ7PjQzPQ2P7tHr1fbZ1+zZjp7jVSXpBP8WGxxquOuFUIWEOvZm eGXQ== X-Gm-Message-State: AOAM533b88jpgCv9/E2OlEI7dFdURi4YjwchV55326gdywfwfc7wqGIt WwXNAyuDLrZRmnJg1xltqY0dDcTMnO4= X-Google-Smtp-Source: ABdhPJzhDek8ybILOMb9iJcaWFbYU1mcMDAXlGPejOz3pJq+A0RaNVqw2lCYZsJUUVBmmVR5yPK21A== X-Received: by 2002:a0c:9003:: with SMTP id o3mr2075739qvo.62.1605904773463; Fri, 20 Nov 2020 12:39:33 -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 q15sm2741822qki.13.2020.11.20.12.39.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:32 -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 0AKKdV38029398 for ; Fri, 20 Nov 2020 20:39:31 GMT Subject: [PATCH v2 065/118] NFSD: Replace READ* macros in nfsd4_decode_layoutreturn() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:31 -0500 Message-ID: <160590477177.1340.2179693473939435787.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 72 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 28 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 8add9b5242f1..e4ff29ab918c 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -605,6 +605,43 @@ nfsd4_decode_layoutupdate4(struct nfsd4_compoundargs *argp, return nfs_ok; } +static __be32 +nfsd4_decode_layoutreturn4(struct nfsd4_compoundargs *argp, + struct nfsd4_layoutreturn *lrp) +{ + __be32 status; + + if (xdr_stream_decode_u32(argp->xdr, &lrp->lr_return_type) < 0) + return nfserr_bad_xdr; + switch (lrp->lr_return_type) { + case RETURN_FILE: + if (xdr_stream_decode_u64(argp->xdr, &lrp->lr_seg.offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &lrp->lr_seg.length) < 0) + return nfserr_bad_xdr; + status = nfsd4_decode_stateid4(argp, &lrp->lr_sid); + if (status) + return status; + if (xdr_stream_decode_u32(argp->xdr, &lrp->lrf_body_len) < 0) + return nfserr_bad_xdr; + if (lrp->lrf_body_len > 0) { + lrp->lrf_body = xdr_inline_decode(argp->xdr, lrp->lrf_body_len); + if (!lrp->lrf_body) + return nfserr_bad_xdr; + } + break; + case RETURN_FSID: + case RETURN_ALL: + lrp->lr_seg.offset = 0; + lrp->lr_seg.length = NFS4_MAX_UINT64; + break; + default: + return nfserr_bad_xdr; + } + + return nfs_ok; +} + #endif /* CONFIG_NFSD_PNFS */ static __be32 @@ -1811,34 +1848,13 @@ static __be32 nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, struct nfsd4_layoutreturn *lrp) { - DECODE_HEAD; - - READ_BUF(16); - lrp->lr_reclaim = be32_to_cpup(p++); - lrp->lr_layout_type = be32_to_cpup(p++); - lrp->lr_seg.iomode = be32_to_cpup(p++); - lrp->lr_return_type = be32_to_cpup(p++); - if (lrp->lr_return_type == RETURN_FILE) { - READ_BUF(16); - p = xdr_decode_hyper(p, &lrp->lr_seg.offset); - p = xdr_decode_hyper(p, &lrp->lr_seg.length); - - status = nfsd4_decode_stateid4(argp, &lrp->lr_sid); - if (status) - return status; - - READ_BUF(4); - lrp->lrf_body_len = be32_to_cpup(p++); - if (lrp->lrf_body_len > 0) { - READ_BUF(lrp->lrf_body_len); - READMEM(lrp->lrf_body, lrp->lrf_body_len); - } - } else { - lrp->lr_seg.offset = 0; - lrp->lr_seg.length = NFS4_MAX_UINT64; - } - - DECODE_TAIL; + if (xdr_stream_decode_bool(argp->xdr, &lrp->lr_reclaim) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &lrp->lr_layout_type) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &lrp->lr_seg.iomode) < 0) + return nfserr_bad_xdr; + return nfsd4_decode_layoutreturn4(argp, lrp); } #endif /* CONFIG_NFSD_PNFS */ From patchwork Fri Nov 20 20:39:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922425 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 21AA5C56202 for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B7BBB22464 for ; Fri, 20 Nov 2020 20:40:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HWIZbrQW" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731424AbgKTUjn (ORCPT ); Fri, 20 Nov 2020 15:39:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33414 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731674AbgKTUjl (ORCPT ); Fri, 20 Nov 2020 15:39:41 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1848C0613CF for ; Fri, 20 Nov 2020 12:39:39 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id t5so8134709qtp.2 for ; Fri, 20 Nov 2020 12:39:39 -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=KG1XMB68Vhrd94qT642sYNbrTggfZvnl108j+8fzkKw=; b=HWIZbrQWY6PWg8OyGJnNzoxd1bzRzBODYizO1/s7OgjiPQKc/9yw0Bl8KxXSYAMEUA cg2kVfv+o45rPiUTlIbCQHLVSGXQZdBKTP2YXdL508nUegb2YlQ+/eEbWy6VfyHybODk hgYxf2OeDJHfRGHJbWmufQvWp2DPZ1TfEggrTaXEb21V3sGLMjzfQUGnQGOxYYhWs3aH 13sFlzk43m6O+GJCzkx/V49gBIkZ24mReg/8sN6tvZUUnzpbZXCoHORSv3EWmI/f8QeJ oKywmAV0a+vDu9WYcH7qCj9r+subEDAevU1AeHInZU47JF1YwY6cdMS1QxuV8u0B59JO 5kJw== 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=KG1XMB68Vhrd94qT642sYNbrTggfZvnl108j+8fzkKw=; b=lHixeJqfW25zEKpzazDaxdg75ypxY0Kf6fRJTww5y+1zDooCv4LJbTydddi5bS4rLw srTYeKP5FKUlzxhvbdbJ7ihorwnn0Pu4RTSeJiu2VdKitMhpqMXJvyJGhzsNIDgCwpnp YTc99FnTsEz1259sH68zaBqrR+shHuGu8RNwKwkE4nxNPDbgh2NeiNI4PYKzH2XCeqYQ 6x09Atn/QjkKsaewcyLvDcHKjszwcmjqYkJWKupiRJkVGcdPl7HtAbJDOt36WESndPhY wuUdx2vGf2gPZo/DZ2M+Pa09jWUz8M1E+lWYJQVExK85Jhzbm90JOW+DaGzZ5kbmfrC+ bl0A== X-Gm-Message-State: AOAM533B1lBXOjFYj0EvydZU1fmUr4bh7YL80zR6Yx/y9Xoe0wgVpUNG wItVizlxxJvKvywRgdE5pe+cstPzpgI= X-Google-Smtp-Source: ABdhPJy/GXHxiKV5UQ3OF/0zvxP5I793JB8LUkqRHgUlLhl3PeltNNvSZIWVaEUDmhDAwuBycBizxQ== X-Received: by 2002:aed:3c42:: with SMTP id u2mr18574440qte.159.1605904778774; Fri, 20 Nov 2020 12:39:38 -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 d48sm3071669qta.26.2020.11.20.12.39.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:38 -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 0AKKdbXO029401 for ; Fri, 20 Nov 2020 20:39:37 GMT Subject: [PATCH v2 066/118] NFSD: Replace READ* macros in nfsd4_decode_secinfo_no_name() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:37 -0500 Message-ID: <160590477710.1340.13270366442263923361.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index e4ff29ab918c..1e9bd20faa96 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1302,17 +1302,6 @@ nfsd4_decode_secinfo(struct nfsd4_compoundargs *argp, return nfsd4_decode_component4(argp, &secinfo->si_name, &secinfo->si_namelen); } -static __be32 -nfsd4_decode_secinfo_no_name(struct nfsd4_compoundargs *argp, - struct nfsd4_secinfo_no_name *sin) -{ - DECODE_HEAD; - - READ_BUF(4); - sin->sin_style = be32_to_cpup(p++); - DECODE_TAIL; -} - static __be32 nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *setattr) { @@ -1858,6 +1847,14 @@ nfsd4_decode_layoutreturn(struct nfsd4_compoundargs *argp, } #endif /* CONFIG_NFSD_PNFS */ +static __be32 nfsd4_decode_secinfo_no_name(struct nfsd4_compoundargs *argp, + struct nfsd4_secinfo_no_name *sin) +{ + if (xdr_stream_decode_u32(argp->xdr, &sin->sin_style) < 0) + return nfserr_bad_xdr; + return nfs_ok; +} + static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, struct nfsd4_fallocate *fallocate) From patchwork Fri Nov 20 20:39:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922429 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6BDA6C63777 for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 016EE22470 for ; Fri, 20 Nov 2020 20:40:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QvzT8krE" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731674AbgKTUjp (ORCPT ); Fri, 20 Nov 2020 15:39:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731653AbgKTUjp (ORCPT ); Fri, 20 Nov 2020 15:39:45 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2C314C0613CF for ; Fri, 20 Nov 2020 12:39:45 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id d9so10195910qke.8 for ; Fri, 20 Nov 2020 12:39:45 -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=51O7H7pHzl3XzRb+S1yOCwFwBRZWfO3L/R7pEzL7Elc=; b=QvzT8krEtrFuSkzBk3O8J//e+p3BCTeearAQrgX+Figt943uDOxtDQYFW+fbg9kTVe LydHAMpmFqgJWGE0vm5Vp7f2UhsJZcpdPswhUylpC7RZ6CmXqk5r5OfWI+2c2AB5gjT/ l8yH0RCzy4CYzpzzVXhaTUaR4+LTzULaLJ1ShZS998g5IZXBFd603gdju+HGIMMMCZyf X+dHn6CiwuaR+P/8ftSaSH6QuPOawLW9Wfr4okVuoPcPBB7Yu1WwAdbO+gaG17Na5Eo3 4++ZqhG1vjWOGi3Z6WEWyhvkGHp98KHt8qZbVGoz3yNr/rRmgirSEUHIK7lopK1BwgGX s+2Q== 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=51O7H7pHzl3XzRb+S1yOCwFwBRZWfO3L/R7pEzL7Elc=; b=DQxInOdf43ko7ziX7dJzU4XHU/YJgg2oYv+LJhooSEBgcTIdgZLxMsBEO2FKQ7SLSQ trl61Jj8VMXvV3k2+wgaIA0ohWH14QrzK6kDRPWPhsHQ1a9BjAUOmCoShrGIKh4yTB77 F8ons3qDUJd7LRoxb+lrbIgGIvHc3J8do3NRVCX+tXfsT572ZymaI5uhEa7vkZiXEVoU OOMasws5Gy0PRi1ZM0yTMZnCTXS4GgS/vTBxSONbQuiIVrLlQNL8rA90fZchQbd8u20F JnKHvRPFMg52GTJT4vwWbcNWvQMtm4Zm3zGGNFz1YeG2V24U2as50XsAMm/H2DOjQCvG Ek+A== X-Gm-Message-State: AOAM531WSVJvZvT55KyZFJG2NjDQmn1G+GCQiEbbWA5A2FnphhOy4kHK Dt/xcQ0X4bvQbreJSGlgmSy3lQlTHuI= X-Google-Smtp-Source: ABdhPJyna+boenFSuWewGlp5TROuAJ9qDwQaW45icifKjI4q+hicEnu+se5agsaO4X1PG0s71JMg2w== X-Received: by 2002:a37:8581:: with SMTP id h123mr18362372qkd.328.1605904784135; Fri, 20 Nov 2020 12:39:44 -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 z186sm2756013qke.100.2020.11.20.12.39.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:43 -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 0AKKdggM029404 for ; Fri, 20 Nov 2020 20:39:42 GMT Subject: [PATCH v2 067/118] NFSD: Replace READ* macros in nfsd4_decode_sequence() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:42 -0500 Message-ID: <160590478244.1340.3922893198036439484.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 1e9bd20faa96..5544e85b8897 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1679,22 +1679,6 @@ nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp, return nfsd4_decode_stateid4(argp, &free_stateid->fr_stateid); } -static __be32 -nfsd4_decode_sequence(struct nfsd4_compoundargs *argp, - struct nfsd4_sequence *seq) -{ - DECODE_HEAD; - - READ_BUF(NFS4_MAX_SESSIONID_LEN + 16); - COPYMEM(seq->sessionid.data, NFS4_MAX_SESSIONID_LEN); - seq->seqid = be32_to_cpup(p++); - seq->slotid = be32_to_cpup(p++); - seq->maxslots = be32_to_cpup(p++); - seq->cachethis = be32_to_cpup(p++); - - DECODE_TAIL; -} - static __be32 nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_stateid *test_stateid) { @@ -1855,6 +1839,26 @@ static __be32 nfsd4_decode_secinfo_no_name(struct nfsd4_compoundargs *argp, return nfs_ok; } +static __be32 +nfsd4_decode_sequence(struct nfsd4_compoundargs *argp, + struct nfsd4_sequence *seq) +{ + __be32 *p, status; + + status = nfsd4_decode_sessionid(argp, &seq->sessionid); + if (status) + return status; + p = xdr_inline_decode(argp->xdr, XDR_UNIT * 4); + if (!p) + return nfserr_bad_xdr; + seq->seqid = be32_to_cpup(p++); + seq->slotid = be32_to_cpup(p++); + seq->maxslots = be32_to_cpup(p++); + seq->cachethis = be32_to_cpup(p); + + return nfs_ok; +} + static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, struct nfsd4_fallocate *fallocate) From patchwork Fri Nov 20 20:39:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922431 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 945A3C63798 for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3F1BD2223F for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EuyfhNwo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731677AbgKTUjv (ORCPT ); Fri, 20 Nov 2020 15:39:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731653AbgKTUju (ORCPT ); Fri, 20 Nov 2020 15:39:50 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86064C0613CF for ; Fri, 20 Nov 2020 12:39:50 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id l7so1819139qtp.8 for ; Fri, 20 Nov 2020 12:39:50 -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=6DzxY0kXRPTB+jgKQxJshgh1Ters/AyJ8SX4v+Qq8+E=; b=EuyfhNwoaCBNtdWUMryh0JIBkEhW3NEF5XkzOSAU8Y5sOR81XDMY4gPAI4iMEKjswZ jKMUR0CG6S2uLVCwM2FQh4Rmfo1fgfAWKQ0zlPRtYkAX5pOZMAzph6PJ3VyCMJTWWEEz oc7nOVvZbF8oXi/8Axto2G86wdZq0F0HLVAZwPWOyHKdW2ZzGnsAvD29Qm+poxzuZOfe rF0TRE91rDv2tUFzlkYNmcCtCRpPDVLukBHDJnL3gTWXbnRtHHVktf3KiMzEGjuTuxaO B1LAs4ibTkQeFg+mV47m7N3ZXOB3IguikW3kfhPuZ66ySeYfIr1l1lWsb9EA3nb9xN0P fzaQ== 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=6DzxY0kXRPTB+jgKQxJshgh1Ters/AyJ8SX4v+Qq8+E=; b=lXB2mxqiaYdpxS61xfQH0fUnJmAXGN5HX2nfklHPJGlAs0V/FQN0ORbzem+Y3BndXC qou5CiRIK9A/eH+E0VszQVgSwoOGaK/4jIys3Gtqm2No+kIft8DLaL0pcOCfOWLCaavy N3XmjJF+El+iaD4s4LJquXbGfalSsNfG3HULjQeM4yN97IJsA/Nwbqu0SQ0CEAYoOOfz poz+U50HO6RD/Spadrkkma4JJsNsxV/HCclnOq6NvIljQ3PyifBIKsa52/ezQQ7pqr3o 1cNa6MJfGuQZ/8t6yF4KSCcork3nmjnETs91xzo40IOitfgPwEGW00lF21mh/yy4ZDUe ROdg== X-Gm-Message-State: AOAM533QY2IMDwrPaLbI90BpZdgLUj8ZyRzVilHTgK8+8QOqOkFyJAxV eQ10ZMtbSem06GPsqU127OyDR7RjjJM= X-Google-Smtp-Source: ABdhPJx1cuzXMUAe2qEe/O+M+nTQDuls5KoobwP1zerFJ8PHXfeKCPS5Zy8OVDpR+ZXRNIjsu65ILg== X-Received: by 2002:ac8:5319:: with SMTP id t25mr17041520qtn.351.1605904789456; Fri, 20 Nov 2020 12:39:49 -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 t126sm2811009qkh.133.2020.11.20.12.39.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:48 -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 0AKKdlmd029407 for ; Fri, 20 Nov 2020 20:39:47 GMT Subject: [PATCH v2 068/118] NFSD: Replace READ* macros in nfsd4_decode_test_stateid() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:47 -0500 Message-ID: <160590478777.1340.13216682588605987274.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 61 ++++++++++++++++++++++------------------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 5544e85b8897..c6301393c422 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1679,42 +1679,6 @@ nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp, return nfsd4_decode_stateid4(argp, &free_stateid->fr_stateid); } -static __be32 -nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_stateid *test_stateid) -{ - int i; - __be32 *p, status; - struct nfsd4_test_stateid_id *stateid; - - READ_BUF(4); - test_stateid->ts_num_ids = ntohl(*p++); - - INIT_LIST_HEAD(&test_stateid->ts_stateid_list); - - for (i = 0; i < test_stateid->ts_num_ids; i++) { - stateid = svcxdr_tmpalloc(argp, sizeof(*stateid)); - if (!stateid) { - status = nfserrno(-ENOMEM); - goto out; - } - - INIT_LIST_HEAD(&stateid->ts_id_list); - list_add_tail(&stateid->ts_id_list, &test_stateid->ts_stateid_list); - - status = nfsd4_decode_stateid4(argp, &stateid->ts_id_stateid); - if (status) - goto out; - } - - status = 0; -out: - return status; -xdr_error: - dprintk("NFSD: xdr error (%s:%d)\n", __FILE__, __LINE__); - status = nfserr_bad_xdr; - goto out; -} - static __be32 nfsd4_decode_destroy_clientid(struct nfsd4_compoundargs *argp, struct nfsd4_destroy_clientid *dc) { DECODE_HEAD; @@ -1859,6 +1823,31 @@ nfsd4_decode_sequence(struct nfsd4_compoundargs *argp, return nfs_ok; } +static __be32 +nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_stateid *test_stateid) +{ + struct nfsd4_test_stateid_id *stateid; + __be32 status; + u32 i; + + if (xdr_stream_decode_u32(argp->xdr, &test_stateid->ts_num_ids) < 0) + return nfserr_bad_xdr; + + INIT_LIST_HEAD(&test_stateid->ts_stateid_list); + for (i = 0; i < test_stateid->ts_num_ids; i++) { + stateid = svcxdr_tmpalloc(argp, sizeof(*stateid)); + if (!stateid) + return nfserrno(-ENOMEM); /* XXX: not jukebox? */ + INIT_LIST_HEAD(&stateid->ts_id_list); + list_add_tail(&stateid->ts_id_list, &test_stateid->ts_stateid_list); + status = nfsd4_decode_stateid4(argp, &stateid->ts_id_stateid); + if (status) + return status; + } + + return nfs_ok; +} + static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, struct nfsd4_fallocate *fallocate) From patchwork Fri Nov 20 20:39:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922427 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE5F3C6379D for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7E22222464 for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TwNFurLt" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731653AbgKTUj4 (ORCPT ); Fri, 20 Nov 2020 15:39:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731087AbgKTUj4 (ORCPT ); Fri, 20 Nov 2020 15:39:56 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA148C0613CF for ; Fri, 20 Nov 2020 12:39:55 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id l2so10273432qkf.0 for ; Fri, 20 Nov 2020 12:39:55 -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=7EhqnswBN7VhEEUvBRTc+ME7wDXI1qjtedrZmN50LRk=; b=TwNFurLt6W99MXLrj7E6bPIYltWQFF/T9rFvQwjxbOjhV5yFNruQeBRgjNT6b0fguK VPJZqPhaklxw+ydgUg5A75N22RJOpqQUGzQhvwqwYU0fBmuFs5meZ+THEb6IekBp2W5E hadO0ciXjT1HR3UBhDvO0Cenr1tJQrkKlvOwt+9ULzwqD4HFXE9B1G7hjiC9NJ4FXZV5 zu9oZz48JrC4qHIZjP/neCv+tCoLX1CjApaEsoPEEfHm+/PnskmtnUmPBQUrlT9FgOI8 OjhvL2UcaLKyS01uf4qJM0OSDAM2YssCfRInVUuWoWoqaeVWiMWRX2RIpQQRG59Hq4QT DycQ== 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=7EhqnswBN7VhEEUvBRTc+ME7wDXI1qjtedrZmN50LRk=; b=DzGRMO+h+4l9yF67PtUp3FuOjNh0jmOjL1os2AGtnrScZogAHvGDhcyZvXJJLwfdiG giWIADZOykmXolAjnTkeQLs39xnCJENS/fXDsxdL0Efg0O1m7FH/S2g5gnE4hP7VFv2z 536rMEticOfChw9FJhZ8ERncJymFz3dsjtO/wKKuvQNzeyL2lizPJYZ4LZ4dbNz4s5Pg +0oBr1hD4qjgMUuHd52iwnxqRk5f9sEXvE8ZnIecW2zcCWLLr++AX2+Ft8/DM36pr+dD 9F1Myb4IlItHpjRQIqhcPxHE5m5vsZs7iMliZkd035To+o3ucAUj3fGfHwh5b61Hi+Sh 2s9Q== X-Gm-Message-State: AOAM530n6IX6VgD7OVzUqBaPrGyRKXhSTpSDEnCJmQY9oRSneYS1WTqv NC6OuSjh/1sNCUetdEE7mMsuungGZ3s= X-Google-Smtp-Source: ABdhPJxaPCx4TuvyOPOZsrrJPST3FI42AFzUmY29bbrJ/lMjkgV8ZgZJ6GalwHbLoHBkxZnr4zKyYQ== X-Received: by 2002:a37:6287:: with SMTP id w129mr10194170qkb.261.1605904794825; Fri, 20 Nov 2020 12:39:54 -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 c199sm2822441qke.111.2020.11.20.12.39.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:54 -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 0AKKdruB029410 for ; Fri, 20 Nov 2020 20:39:53 GMT Subject: [PATCH v2 069/118] NFSD: Replace READ* macros in nfsd4_decode_destroy_clientid() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:53 -0500 Message-ID: <160590479311.1340.834493651502484558.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index c6301393c422..6bfc9f69c660 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1679,16 +1679,6 @@ nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp, return nfsd4_decode_stateid4(argp, &free_stateid->fr_stateid); } -static __be32 nfsd4_decode_destroy_clientid(struct nfsd4_compoundargs *argp, struct nfsd4_destroy_clientid *dc) -{ - DECODE_HEAD; - - READ_BUF(8); - COPYMEM(&dc->clientid, 8); - - DECODE_TAIL; -} - static __be32 nfsd4_decode_reclaim_complete(struct nfsd4_compoundargs *argp, struct nfsd4_reclaim_complete *rc) { DECODE_HEAD; @@ -1848,6 +1838,12 @@ nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_sta return nfs_ok; } +static __be32 nfsd4_decode_destroy_clientid(struct nfsd4_compoundargs *argp, + struct nfsd4_destroy_clientid *dc) +{ + return nfsd4_decode_clientid4(argp, &dc->clientid); +} + static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, struct nfsd4_fallocate *fallocate) From patchwork Fri Nov 20 20:39:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922435 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 27114C64E69 for ; Fri, 20 Nov 2020 20:40:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BCF392223F for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TgHiiHdo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731683AbgKTUkB (ORCPT ); Fri, 20 Nov 2020 15:40:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731679AbgKTUkB (ORCPT ); Fri, 20 Nov 2020 15:40:01 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34B9FC0613CF for ; Fri, 20 Nov 2020 12:40:01 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id q5so10174293qkc.12 for ; Fri, 20 Nov 2020 12:40:01 -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=Q5V126LhdaXHlP+i06x0ohlkA0uX6G+kzwqm6afJP+0=; b=TgHiiHdon4CEQQYQf17MmuEqUSpxyKfgJyxI5Q+Uwk8phpj5OkV+XcORWmlesVGGBC iBj+bxfWJCap8nc201mtwAyUtK16Fe7rSPZrY6pbX4y0bhpMVq/8eHXHEUxtujIyQF6S VPvoFxPOOMa1VWYrB36IF23NyqkmGCD2wXzMTqqm/4hhpK0YgVurCBCa3WMhodRdt398 ddhB5dEypAkXPJb9jjqvTIuTwMVJVGQ0tAADjnQu+fQhqbHcoxE/i7g9cEw7WzRgGfYQ Oz7QhFSnsWT9R71LrN83Q7qwEzoakrsmMvgcabT0NHJGZ7DSV9unFTycyRf5Mtm+3eRA OGWg== 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=Q5V126LhdaXHlP+i06x0ohlkA0uX6G+kzwqm6afJP+0=; b=QaJRkc3BR9eo58KR4W9yfZPQEf0ecbpMSBevJoK9Ws6F/SerJusESUw3u7FveMXK+y 52tItAln5/yBD99aUZmc8g0AwqECxDRkqueGtKfCIN65FKC2Vi3cnL3PC6einy26Bf+u u0hqg4rgZlxug3Sy5eF/8lQApr8bq5HZ9NME2oWsEPtA7hBLkCo+cnEM81VBEIhUca6z YPKx1+HPvoZQVSqHqmYgmhIFN70mGjwQhzDdWGsYoD4BzQ3ud6k+mgjHSLrvpLx4pkqN PLOIE3vLINK9l0D4qalx5diBIW3hz2vH3uZSxqutGzUV8I7NQQtu1F/EAIgErBT6oMBN K0uQ== X-Gm-Message-State: AOAM5313ck/4GrlAUDvO6n4K5x7DuptpW7mLtEl85ficdA3nCwlegBNz zs5WmYmBcpSVV4qvki+QVZN+8CdoVuw= X-Google-Smtp-Source: ABdhPJyJHXVR9b2vqufNQWITqH4Zm0oJmIzptOggthCdGLRgoy4fcEclTldjcP9bXjwOlOSxUskO9w== X-Received: by 2002:a05:620a:5a6:: with SMTP id q6mr17629062qkq.80.1605904800175; Fri, 20 Nov 2020 12:40:00 -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 d19sm2506764qtd.32.2020.11.20.12.39.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:39:59 -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 0AKKdwi5029413 for ; Fri, 20 Nov 2020 20:39:58 GMT Subject: [PATCH v2 070/118] NFSD: Replace READ* macros in nfsd4_decode_reclaim_complete() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:39:58 -0500 Message-ID: <160590479844.1340.3002295923429250700.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 6bfc9f69c660..6325b71f3d7e 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1679,16 +1679,6 @@ nfsd4_decode_free_stateid(struct nfsd4_compoundargs *argp, return nfsd4_decode_stateid4(argp, &free_stateid->fr_stateid); } -static __be32 nfsd4_decode_reclaim_complete(struct nfsd4_compoundargs *argp, struct nfsd4_reclaim_complete *rc) -{ - DECODE_HEAD; - - READ_BUF(4); - rc->rca_one_fs = be32_to_cpup(p++); - - DECODE_TAIL; -} - #ifdef CONFIG_NFSD_PNFS static __be32 nfsd4_decode_getdeviceinfo(struct nfsd4_compoundargs *argp, @@ -1844,6 +1834,14 @@ static __be32 nfsd4_decode_destroy_clientid(struct nfsd4_compoundargs *argp, return nfsd4_decode_clientid4(argp, &dc->clientid); } +static __be32 nfsd4_decode_reclaim_complete(struct nfsd4_compoundargs *argp, + struct nfsd4_reclaim_complete *rc) +{ + if (xdr_stream_decode_bool(argp->xdr, &rc->rca_one_fs) < 0) + return nfserr_bad_xdr; + return nfs_ok; +} + static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, struct nfsd4_fallocate *fallocate) From patchwork Fri Nov 20 20:40:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922433 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B45BC6379F for ; Fri, 20 Nov 2020 20:40:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 06B6D22464 for ; Fri, 20 Nov 2020 20:40:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QH7d0/lv" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731679AbgKTUkG (ORCPT ); Fri, 20 Nov 2020 15:40:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33488 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731087AbgKTUkG (ORCPT ); Fri, 20 Nov 2020 15:40:06 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 52382C0613CF for ; Fri, 20 Nov 2020 12:40:06 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id p12so8104141qtp.7 for ; Fri, 20 Nov 2020 12:40:06 -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=dRrWDlEOWVYdurTdcmQ8VwT1YNVRDdAE+N8hCUvjolc=; b=QH7d0/lvSUCTb9jJPYjlJubACeOBLWzp2yFT0vwJX7EpU47vUmrwsKXiGvcgj5acXK V2eXneiUiDKbkf9Wz7j8yxq4OSyARiXMW6ejWcOoGtATnmYcUApPDMV7nbpUNhzd+uax RpDWqgX2ARG3HXzVim5rzFSiBxRHIY9/M9REW4PB/Ot7cmG2L0P2fbzUHORgedZoB9xD f/g2+8kGbMiG6y5wYGMUZdktDon1VbEaI45/K6IdFhEqjhI3GTg0GQawkl6BICTJczqb Mx5dV9sAG9YOYSFSVoOCOsQ2YZr6e6As/5TlFWMtj1Yn58sJlPj7rx6qAqn7whyDIlBj Y52A== 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=dRrWDlEOWVYdurTdcmQ8VwT1YNVRDdAE+N8hCUvjolc=; b=L2lLT4L+w84sW+rndTxwzNXXbm5dr20UGSV9OCccLcqPAfS3DcZaF4aDtiw7b7LVw9 fpMMj3weLLtJzwR+1OXSIeP/M8NgTjwPx0Oj0wLImKAzkOC1J/ncItUkvBZaCYImmE55 fHlzeNtDmT/s9Bd0JDexsjD5mVqlOKtr8+1dkQqld4JCcPRdRGz5wYcwc6WSFofzE8Nz 871h8RGoMi4cztPsrrvK9z/q7B2Kg3e2KREkvAA4M9Hhy4LpBL14wpIWkpI6nc834i7m InaNJrLHilGHqBlmXfc7CYwJW7LWfQD/8UGqBYhrkkvJaskcqwrWNg9LJAFa6MLhs4hM ZDxg== X-Gm-Message-State: AOAM532S7gessmdftlhnTP4m9ZLP5CPMwvhHvq5XqkcDrarMF6AN6x3U 9hh62+FzaKYRuUrnEdBfDi8zK4Fa0AE= X-Google-Smtp-Source: ABdhPJxiKqCaeY//VgAj/O8HqF9uWE/L7XX/mXKHab+1oGdxTUdqrv/0tCIiiZCoNKOfPe4qx8Rl3A== X-Received: by 2002:a05:622a:8f:: with SMTP id o15mr17728561qtw.152.1605904805309; Fri, 20 Nov 2020 12:40:05 -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 u24sm2957718qtb.33.2020.11.20.12.40.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:04 -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 0AKKe3j5029426 for ; Fri, 20 Nov 2020 20:40:03 GMT Subject: [PATCH v2 071/118] NFSD: Replace READ* macros in nfsd4_decode_fallocate() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:03 -0500 Message-ID: <160590480378.1340.2097750501358658369.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 6325b71f3d7e..0509f2c00310 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1846,17 +1846,17 @@ static __be32 nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, struct nfsd4_fallocate *fallocate) { - DECODE_HEAD; + __be32 status; status = nfsd4_decode_stateid4(argp, &fallocate->falloc_stateid); if (status) return status; + if (xdr_stream_decode_u64(argp->xdr, &fallocate->falloc_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &fallocate->falloc_length) < 0) + return nfserr_bad_xdr; - READ_BUF(16); - p = xdr_decode_hyper(p, &fallocate->falloc_offset); - xdr_decode_hyper(p, &fallocate->falloc_length); - - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:40:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922437 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DF714C64E7B for ; Fri, 20 Nov 2020 20:40:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 83ABF22464 for ; Fri, 20 Nov 2020 20:40:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tYopFeFA" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731693AbgKTUkN (ORCPT ); Fri, 20 Nov 2020 15:40:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730731AbgKTUkN (ORCPT ); Fri, 20 Nov 2020 15:40:13 -0500 Received: from mail-qv1-xf43.google.com (mail-qv1-xf43.google.com [IPv6:2607:f8b0:4864:20::f43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADA91C0613CF for ; Fri, 20 Nov 2020 12:40:11 -0800 (PST) Received: by mail-qv1-xf43.google.com with SMTP id a15so5323307qvk.5 for ; Fri, 20 Nov 2020 12:40:11 -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=n2dVczH5nIofYK6R7C8/PxfyVjUZ08Rq9I8TKfDdMfg=; b=tYopFeFArkLmsPQd75AZstl6UmduU8uGAooL+KtZWtNT9TNqStxm5m190uXhHMus4e 8X6u25DWYdZBU1RY6aCGMvuQDK1PZfAgxNgEQhxaU7JMdjQVWFPZQihX3ggNF0OYCb9C f7rRy6yo+GnCR/oKglBqIHo7/bslosfy4mbJ+eSvFN/Lz/hUn6Dpv69zDn6YpmXnBu7r TsbMn0/1T+XR1PBSo5CCOSXmN9YisqzcxdrXpMxC85Vo6yJW6DL54OsW8lXLfmuTL9LT SgmIlOW0iB7NCZ4YEF8HZ1fofOkjzTg7R9pJJaIeQ/bHRPhzesUsiPYI6wkUcqYf9sp9 DDRQ== 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=n2dVczH5nIofYK6R7C8/PxfyVjUZ08Rq9I8TKfDdMfg=; b=AhpJUqK8VoxpTwraR/hayHXSy46F+ip1tORVDX2NJFB51tXI0v3EGtoFhrNRKM8EqU wwyoyd61xQK0CDrJwK954OvR7H7Ka89CPqj/A4XQsbttQznN2+mVkfEwOZlu8Kv7Sdr4 z4ybin3ivcGl6KTUVXxv8kefnwdpzTbRspj+V1+IzU8vRTjEOxRZavej9CZcddMrRvBs UCHSXsIGuW5Dg85JM7gf0gR3pHIkJfeQEtXrgelAfUx2PJrijocoxQfSqlryf1xmmGeo vxi+35L6oJ7aj7oBLaYZO8qhC+ExK6DfKlgFjGQHV2DhVzaT+QRqQAxWOTQtIfx7tzsG iQEw== X-Gm-Message-State: AOAM5319Vu3cOhbJcQ32LJtkfXRcRBUPpqCfztDzcBdYNWoPro/pvlRC mvW5Yo+VwgNczUdXujXZhOK7/9AygBM= X-Google-Smtp-Source: ABdhPJwaLetx5l4dpq3ubeTW4+5U/iYZRec6M8b/7lrj3LMgLQZV28TyfeniRDOhSj3ldl5Bppltpw== X-Received: by 2002:a0c:aed2:: with SMTP id n18mr18576051qvd.4.1605904810658; Fri, 20 Nov 2020 12:40:10 -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 7sm2844735qko.106.2020.11.20.12.40.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:09 -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 0AKKe8mV029429 for ; Fri, 20 Nov 2020 20:40:08 GMT Subject: [PATCH v2 072/118] NFSD: Replace READ* macros in nfsd4_decode_clone() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:08 -0500 Message-ID: <160590480889.1340.13450397927795498268.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 0509f2c00310..ed1e6460b655 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1862,7 +1862,7 @@ nfsd4_decode_fallocate(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_clone(struct nfsd4_compoundargs *argp, struct nfsd4_clone *clone) { - DECODE_HEAD; + __be32 status; status = nfsd4_decode_stateid4(argp, &clone->cl_src_stateid); if (status) @@ -1870,12 +1870,14 @@ nfsd4_decode_clone(struct nfsd4_compoundargs *argp, struct nfsd4_clone *clone) status = nfsd4_decode_stateid4(argp, &clone->cl_dst_stateid); if (status) return status; + if (xdr_stream_decode_u64(argp->xdr, &clone->cl_src_pos) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &clone->cl_dst_pos) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, &clone->cl_count) < 0) + return nfserr_bad_xdr; - READ_BUF(8 + 8 + 8); - p = xdr_decode_hyper(p, &clone->cl_src_pos); - p = xdr_decode_hyper(p, &clone->cl_dst_pos); - p = xdr_decode_hyper(p, &clone->cl_count); - DECODE_TAIL; + return nfs_ok; } static __be32 nfsd4_decode_nl4_server(struct nfsd4_compoundargs *argp, From patchwork Fri Nov 20 20:40:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922439 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2D39AC64E7C for ; Fri, 20 Nov 2020 20:40:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BF7C92223F for ; Fri, 20 Nov 2020 20:40:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="C+INhUC/" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729047AbgKTUkS (ORCPT ); Fri, 20 Nov 2020 15:40:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33524 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730731AbgKTUkS (ORCPT ); Fri, 20 Nov 2020 15:40:18 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 058A7C0613CF for ; Fri, 20 Nov 2020 12:40:17 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id 199so10184948qkg.9 for ; Fri, 20 Nov 2020 12:40:16 -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=e5Cz+vU5zQOjD0M6LywWumtjWTz+s+1GiM7WbMAQIZY=; b=C+INhUC/4TqWYjtcwKO4ISruGvtlPIBmV2L/suGYSQWH0ZGcQQvg6/oMe5Ir8DQWmD XXmpME8ab1vE5XQWwQx2Am9xBJP1SHx2DclWFliLE8sViXHc34U3EGFSAHRYPgi8RlkI 1TO2mmSGtpVZqTTU86NU2mh7/UdualhFtbVreZCV62qh4mfnA9dWFFe5KQ/IohVgi0y1 G7g9Ci4PHyHrUOaD2exuZDAKRGHFi2ALGUUIvCZXRTgu6vra1CBSw9VMye9P+qZ/lo7U JWR6APQvNhoJEcMb6IexdAzZJvMaUwdAD8w25BfJFLs3cqKA9hxsOc7lty1tfJB7k77f ezPw== 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=e5Cz+vU5zQOjD0M6LywWumtjWTz+s+1GiM7WbMAQIZY=; b=Y+1s6MQlgj8Vtt63JGtaxxDbUhhH7vdSnBnLAEeZgTgdG2L65PBmG6MSm3zsffScrL fqBTS92gxjGoFfRnKhEMIdlMWR3rNWq1F9pqrktQp1k2EdttARtmma7d36+HYBaKuYsj 4NMZhYx9AIoYydgqO7pjc3nFbJj/O947QLzu+79ftA3Ewy7I50p5rurM8Cb0P2kt24kU TibWqXL+QijbLBXzFjTMPB99996eLKEFBftLqt40CcZQvJ6/xsbBEWA9TO7o0Srd1fBb 0PmxTwTjJgM+1O5EwhYHYmxxuCvWaPJCfXwL14DzjeTsJ5IeKdeFYG/4pLmJMskX1MEb 1thg== X-Gm-Message-State: AOAM53379OV4hafWA1ECVpX8M7Ls/DUlgZvhPvGolJ34v3HcDZ3DPLm8 TYWn4Ah8zm3gS1zfy0RNfsc+Fy1OV+g= X-Google-Smtp-Source: ABdhPJwejHU8ztWhKmLQKbp2cqbg6r8QU/DU3OZU7MxHjSd2tFE03qvffmvlzAJ9pT5MTAgB/LaIXQ== X-Received: by 2002:a37:9d8:: with SMTP id 207mr4320096qkj.318.1605904815954; Fri, 20 Nov 2020 12:40:15 -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 y17sm2728105qki.134.2020.11.20.12.40.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:15 -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 0AKKeEr0029432 for ; Fri, 20 Nov 2020 20:40:14 GMT Subject: [PATCH v2 073/118] NFSD: Replace READ* macros in nfsd4_decode_nl4_server() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:14 -0500 Message-ID: <160590481423.1340.11474414605043721718.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index ed1e6460b655..6108f8ff36b2 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1883,36 +1883,42 @@ nfsd4_decode_clone(struct nfsd4_compoundargs *argp, struct nfsd4_clone *clone) static __be32 nfsd4_decode_nl4_server(struct nfsd4_compoundargs *argp, struct nl4_server *ns) { - DECODE_HEAD; struct nfs42_netaddr *naddr; + __be32 *p; - READ_BUF(4); - ns->nl4_type = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &ns->nl4_type) < 0) + return nfserr_bad_xdr; /* currently support for 1 inter-server source server */ switch (ns->nl4_type) { case NL4_NETADDR: naddr = &ns->u.nl4_addr; - READ_BUF(4); - naddr->netid_len = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &naddr->netid_len) < 0) + return nfserr_bad_xdr; if (naddr->netid_len > RPCBIND_MAXNETIDLEN) - goto xdr_error; + return nfserr_bad_xdr; - READ_BUF(naddr->netid_len + 4); /* 4 for uaddr len */ - COPYMEM(naddr->netid, naddr->netid_len); + p = xdr_inline_decode(argp->xdr, naddr->netid_len); + if (!p) + return nfserr_bad_xdr; + memcpy(naddr->netid, p, naddr->netid_len); - naddr->addr_len = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &naddr->addr_len) < 0) + return nfserr_bad_xdr; if (naddr->addr_len > RPCBIND_MAXUADDRLEN) - goto xdr_error; + return nfserr_bad_xdr; - READ_BUF(naddr->addr_len); - COPYMEM(naddr->addr, naddr->addr_len); + p = xdr_inline_decode(argp->xdr, naddr->addr_len); + if (!p) + return nfserr_bad_xdr; + memcpy(naddr->addr, p, naddr->addr_len); break; default: - goto xdr_error; + return nfserr_bad_xdr; } - DECODE_TAIL; + + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:40:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922443 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA207C2D0E4 for ; Fri, 20 Nov 2020 20:40:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7095F22201 for ; Fri, 20 Nov 2020 20:40:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tY1F3vrP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728538AbgKTUkX (ORCPT ); Fri, 20 Nov 2020 15:40:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33542 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728349AbgKTUkW (ORCPT ); Fri, 20 Nov 2020 15:40:22 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 78F7DC0613CF for ; Fri, 20 Nov 2020 12:40:22 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id x13so5309873qvk.8 for ; Fri, 20 Nov 2020 12:40:22 -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=zhIHg8FeAPtzkYR53vnosXPYQvT+Jw2ttxtGJ7KfFKQ=; b=tY1F3vrP0aBOkdAGvC2zSYbJoJVcEajWYCxX6vpVL7ryuiRR6pIDATBMHT0jme/aYv LSUY/ri2C32KOVyzpCLeEBrBb9EyUXdz8QEzXXamubvdiDWc1FexdlMRt9vDEDdc5nUa Q45XVHlBQ6Ck8mtjoqiC+oDgOBpcUESsXVvFyYd7ljDoSZ/qyznI4qwjL8eNbHMtRweQ SWgEzZk3Q7KFVM5e9zCFnX/WJyXtbfTWvsBvxCOxoaIlxa1U7IEeBZm/P3OnM2Kztc6n 1Ak+X7wxER40vlXXVjvoASFjndTPSH65NwOynpQ6Ouyoe/sBO8A+aYlbTKhinpzEWfOQ VbRg== 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=zhIHg8FeAPtzkYR53vnosXPYQvT+Jw2ttxtGJ7KfFKQ=; b=drLaZMJJwj6K67XTN7PxD58PGiLbXQ+eaQktjzDIIx0b6D3JF92y6nNJw3Kiasiyl+ c1Co9N8vIJhH8/cdm6xDs+Ut5QGQsRsEzT09uC/veDHOlLOXZYJTDF+jBE2zpKnlAOEj 7rKCC3SwOoXjL6JTnur42I1UDgM7kN1yIGc0SkyFZmZ/Hd7KEkNwq7qTI1AFhHg4gDDZ QR8ppZPlYEdNNzPcDdYFZDXQfqHP8A6tmtK+BkhkIp8Ul9ZVUys1DQq2j44TkUkxBW22 cn68JdD3c6+nfv+jODEAxRJRUGNZOWPipAZyHM29HZLGXBy5XRPozQ5v6NcsLmFK6Ed0 3ElA== X-Gm-Message-State: AOAM531MIk2/IOCWBTJ195n8STVdQAGXCZ9QLxez71uWUQs/4zTZt0m7 FD/7c8ISUCJcaLcN2BnRtNsDZz45Amw= X-Google-Smtp-Source: ABdhPJzmO+fvUhnxqNUTUBqOoJ4pNOA3KnGxgMzLDtrhC6GbQ2GBQhDpfK1zQ3hlqEL+E7pj0zkT8w== X-Received: by 2002:ad4:548b:: with SMTP id q11mr17398748qvy.44.1605904821386; Fri, 20 Nov 2020 12:40:21 -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 c6sm3015918qkg.54.2020.11.20.12.40.20 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:20 -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 0AKKeJ84029435 for ; Fri, 20 Nov 2020 20:40:19 GMT Subject: [PATCH v2 074/118] NFSD: Replace READ* macros in nfsd4_decode_copy() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:19 -0500 Message-ID: <160590481959.1340.9874410868824433151.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 37 ++++++++++++++++++++----------------- fs/nfsd/xdr4.h | 2 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 6108f8ff36b2..84d69c436fd3 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1924,9 +1924,9 @@ static __be32 nfsd4_decode_nl4_server(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) { - DECODE_HEAD; struct nl4_server *ns_dummy; - int i, count; + u32 consecutive, i, count; + __be32 status; status = nfsd4_decode_stateid4(argp, ©->cp_src_stateid); if (status) @@ -1934,30 +1934,34 @@ nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) status = nfsd4_decode_stateid4(argp, ©->cp_dst_stateid); if (status) return status; + if (xdr_stream_decode_u64(argp->xdr, ©->cp_src_pos) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, ©->cp_dst_pos) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u64(argp->xdr, ©->cp_count) < 0) + return nfserr_bad_xdr; + /* ca_consecutive: we always do consecutive copies */ + if (xdr_stream_decode_u32(argp->xdr, &consecutive) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, ©->cp_synchronous) < 0) + return nfserr_bad_xdr; - READ_BUF(8 + 8 + 8 + 4 + 4 + 4); - p = xdr_decode_hyper(p, ©->cp_src_pos); - p = xdr_decode_hyper(p, ©->cp_dst_pos); - p = xdr_decode_hyper(p, ©->cp_count); - p++; /* ca_consecutive: we always do consecutive copies */ - copy->cp_synchronous = be32_to_cpup(p++); - - count = be32_to_cpup(p++); - + if (xdr_stream_decode_u32(argp->xdr, &count) < 0) + return nfserr_bad_xdr; copy->cp_intra = false; if (count == 0) { /* intra-server copy */ copy->cp_intra = true; - goto intra; + return nfs_ok; } - /* decode all the supplied server addresses but use first */ + /* decode all the supplied server addresses but use only the first */ status = nfsd4_decode_nl4_server(argp, ©->cp_src); if (status) return status; ns_dummy = kmalloc(sizeof(struct nl4_server), GFP_KERNEL); if (ns_dummy == NULL) - return nfserrno(-ENOMEM); + return nfserrno(-ENOMEM); /* XXX: jukebox? */ for (i = 0; i < count - 1; i++) { status = nfsd4_decode_nl4_server(argp, ns_dummy); if (status) { @@ -1966,9 +1970,8 @@ nfsd4_decode_copy(struct nfsd4_compoundargs *argp, struct nfsd4_copy *copy) } } kfree(ns_dummy); -intra: - DECODE_TAIL; + return nfs_ok; } static __be32 @@ -4718,7 +4721,7 @@ nfsd4_encode_copy(struct nfsd4_compoundres *resp, __be32 nfserr, __be32 *p; nfserr = nfsd42_encode_write_res(resp, ©->cp_res, - copy->cp_synchronous); + !!copy->cp_synchronous); if (nfserr) return nfserr; diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 232529bc1b79..facc5762bf83 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -554,7 +554,7 @@ struct nfsd4_copy { bool cp_intra; /* both */ - bool cp_synchronous; + u32 cp_synchronous; /* response */ struct nfsd42_write_res cp_res; From patchwork Fri Nov 20 20:40:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922441 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 208AEC56202 for ; Fri, 20 Nov 2020 20:40:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AA7C62223F for ; Fri, 20 Nov 2020 20:40:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ay3nSpNa" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730731AbgKTUk2 (ORCPT ); Fri, 20 Nov 2020 15:40:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33554 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728349AbgKTUk2 (ORCPT ); Fri, 20 Nov 2020 15:40:28 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9A60C0613CF for ; Fri, 20 Nov 2020 12:40:27 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id u4so10191980qkk.10 for ; Fri, 20 Nov 2020 12:40:27 -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=kwGZdKBVDc8TkG1gXeyRsEQ9Zz66h6YnIiC1LGdZjgU=; b=ay3nSpNal1JnbGhn/FFL8uyd4vUwFbta+kOsNPR8v65svPGtfzfk+sD876td7qpE3M nmM8LwnbhSRjjGcBvIMuP2siqSaBZWEIjLlNqthKpqNA4iaylN2UjhrW5cOcud5nC5eo pgnUy+gkPn5Bm8H+69f8co/C4A8NxyJYX/sC+MsvMeqKQTnNhSAtsXX7QY09r4+RtlQL bBlB0/2IK5EDNN36XWePCncyUzO47WI+peZxHY4TXsMIdiw0nrE68IHl4YEg+23Yp+7Y lloWrkQp24naMh4X45TShmBiLQyzgrCKWDB/IrzXlOa7wJjcZGZlZs0v7nPPRyTjjpGS cvpg== 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=kwGZdKBVDc8TkG1gXeyRsEQ9Zz66h6YnIiC1LGdZjgU=; b=FyF1sfFusbFTTygvzL7aqo1ySP2gP4rWEKkKYrayEB0eN81r9DwzV8ceu+m3h6Ksg/ jo19syLxpAvBSk29kSuUULwYBUsctuHWuPshp9tThO9mKTowcXEnjQOHtBrRZl8nHP+b kC7Cuz7OFQSN3AMEfPHMq1kMpn+1iIMTGm7YKUw6W9b/v7H9YDwXznNYjZc2t5Y36B5q sRP0I7cDocYFokt/n11wCEcLGsGp9Mpw7LxNOmmU1tYEv5VM7s908UmGwDMkrXHUPDi2 ZtGNY9Yh3yxzBsRMBBW5jnIdj6bWAUB8TsuVqZrsm5YJEkRlZ1C9IdqROR19BqV3mZgI 8fdA== X-Gm-Message-State: AOAM532ESpz0EFQrcyvRgr4mdO5biqPsr2HRFMvLtPrrpUi/BXCJvzQK 5PXiyuMuOI8cTwjAanKMogT7FVizHpo= X-Google-Smtp-Source: ABdhPJy1ir9iw7f9/rSM/H0gzPvSlWjv1N0KN1vAce1jlHJ2mxUu9jbLSGGPXJSeA7cItsNtZxW1aA== X-Received: by 2002:a37:696:: with SMTP id 144mr18809955qkg.369.1605904826736; Fri, 20 Nov 2020 12:40:26 -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 z133sm2980646qka.20.2020.11.20.12.40.25 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:26 -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 0AKKeOci029438 for ; Fri, 20 Nov 2020 20:40:24 GMT Subject: [PATCH v2 075/118] NFSD: Replace READ* macros in nfsd4_decode_seek() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:24 -0500 Message-ID: <160590482493.1340.8090487886701999410.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 84d69c436fd3..520a3c78ea5b 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -1996,17 +1996,17 @@ nfsd4_decode_copy_notify(struct nfsd4_compoundargs *argp, static __be32 nfsd4_decode_seek(struct nfsd4_compoundargs *argp, struct nfsd4_seek *seek) { - DECODE_HEAD; + __be32 status; status = nfsd4_decode_stateid4(argp, &seek->seek_stateid); if (status) return status; + if (xdr_stream_decode_u64(argp->xdr, &seek->seek_offset) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &seek->seek_whence) < 0) + return nfserr_bad_xdr; - READ_BUF(8 + 4); - p = xdr_decode_hyper(p, &seek->seek_offset); - seek->seek_whence = be32_to_cpup(p); - - DECODE_TAIL; + return nfs_ok; } /* From patchwork Fri Nov 20 20:40:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922449 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71161C63777 for ; Fri, 20 Nov 2020 20:40:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E990822470 for ; Fri, 20 Nov 2020 20:40:50 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GdF7k7Z6" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731695AbgKTUkd (ORCPT ); Fri, 20 Nov 2020 15:40:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731513AbgKTUkd (ORCPT ); Fri, 20 Nov 2020 15:40:33 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33A48C0613CF for ; Fri, 20 Nov 2020 12:40:33 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id l2so10275181qkf.0 for ; Fri, 20 Nov 2020 12:40:33 -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=mJ2HlXmzLdua8xXPawn1jQrGyTpFQ4w0pBIrXpQTteU=; b=GdF7k7Z6g6SSJ/d+5v4vjaburyYftUl6UWnN5O6GXP6Sm0a1vGuxRAUVh7f5R7p/Sg 8h0o0FJYzZRvDxYafh6GH2tN1RA6TipG+Pw3t1iLmgAFGw0I0eBahigJ6AhyXmkpCDwc Llr1PRLb4MdNwayyAIlgIDhV0p+7ppcm4QGkiJLbCvUDi/0FQ5fyaPVy6zo8niTWncq5 GU2vLuKRBDiHKCDthpROb6jP+0cRFd0aD4nlh9aqLOIFBUQnQ4P6pexGAK8jYp/U2kMK IyavCjdHSy6GZDnwKvPJnw2WTcihbQydZl+B9EnwXFsjvChI41cCxlHeVBR9DANCmUCY fLbA== 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=mJ2HlXmzLdua8xXPawn1jQrGyTpFQ4w0pBIrXpQTteU=; b=FOYZwW5vcrzWV2HwDG0bTv+oiEEhUf8mHAzi8Nu9WuSMJzA51b+JzaOxrq8iLeDyu1 7sCyQg24GAIvDXxvAvCNYWAht4YKLx9RT70ZVS/eo/4wjjGc6UITfyUY6diWgol6ra+E CG/EtBOUyV1PTCW+6Ej9PHD48i4M48EsV3Q1pxmuySe3nJ7xJO4TLfJklGEdBw/wAqw0 I1/eq0cUV7uD9Ld1kXHvT34cGziAZsbD2oMCJwBaPOBHwajKFrHUi6NL7LR7A6sAGiAA VSxgqj1uXuWRh5vHzq2Hzo6eu0KCQpw0hUaAqBwXKXYS3qKxTNDm7+EIx6NTV+o8SMcw sHXw== X-Gm-Message-State: AOAM5325+sRsJqOzQPzecyWEcpy7m85U5jLQ5OzMpiYgZ3R4ysTur4Z0 uOvvorH3+CuPiEanXIET4Eb5axmRbGE= X-Google-Smtp-Source: ABdhPJzYVmAx0hwgTb4+gU9CcUOH2LTzkoLrFonU69qQ5UPzY4EvpVPjx6iSh+jZRk9cMN8enHUp6g== X-Received: by 2002:ae9:f70e:: with SMTP id s14mr18076491qkg.340.1605904832123; Fri, 20 Nov 2020 12:40:32 -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 l7sm2808235qtp.19.2020.11.20.12.40.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:31 -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 0AKKeUxX029441 for ; Fri, 20 Nov 2020 20:40:30 GMT Subject: [PATCH v2 076/118] NFSD: Replace READ* macros in nfsd4_decode_xattr_name() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:30 -0500 Message-ID: <160590483026.1340.6535630375900060370.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 520a3c78ea5b..e1f8de971c0a 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -2069,25 +2069,22 @@ nfsd4_vbuf_from_vector(struct nfsd4_compoundargs *argp, struct xdr_buf *xdr, static __be32 nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) { - DECODE_HEAD; char *name, *sp, *dp; u32 namelen, cnt; + __be32 *p; - READ_BUF(4); - namelen = be32_to_cpup(p++); - + if (xdr_stream_decode_u32(argp->xdr, &namelen) < 0) + return nfserr_bad_xdr; if (namelen > (XATTR_NAME_MAX - XATTR_USER_PREFIX_LEN)) return nfserr_nametoolong; - if (namelen == 0) - goto xdr_error; - - READ_BUF(namelen); - + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, namelen); + if (!p) + return nfserr_bad_xdr; name = svcxdr_tmpalloc(argp, namelen + XATTR_USER_PREFIX_LEN + 1); if (!name) return nfserr_jukebox; - memcpy(name, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN); /* @@ -2100,14 +2097,14 @@ nfsd4_decode_xattr_name(struct nfsd4_compoundargs *argp, char **namep) while (cnt-- > 0) { if (*sp == '\0') - goto xdr_error; + return nfserr_bad_xdr; *dp++ = *sp++; } *dp = '\0'; *namep = name; - DECODE_TAIL; + return nfs_ok; } /* From patchwork Fri Nov 20 20:40:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922445 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9204BC63798 for ; Fri, 20 Nov 2020 20:40:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3092322201 for ; Fri, 20 Nov 2020 20:40:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iLqqFYHe" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727112AbgKTUkj (ORCPT ); Fri, 20 Nov 2020 15:40:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33590 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728396AbgKTUki (ORCPT ); Fri, 20 Nov 2020 15:40:38 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 893AEC0613CF for ; Fri, 20 Nov 2020 12:40:38 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id x13so5310175qvk.8 for ; Fri, 20 Nov 2020 12:40:38 -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=JqV6vXrezmLuLaRTN7OB6qdkXyFh2UzBBqpznD0O0+g=; b=iLqqFYHeIJ9JRb6/vqKfL0X1P7TVoiozwanzpJV74Eq10aW7pInsKrbKCpL8Na17lq r4A7kWonxuHie/0cH4oVzO8y7tVtGN6FX0B/QRWhzqasUXl0nKUZb9UI+MYWTzI0NiOn 7DyK0iphJgY4nhQMS1FKvsqD9DiYKbHLTkUyBPdkwIs1njO6iNcvlIamJV7LoG/7jE2V K+xK0umEMSi5h2Q/TCmh+dnj2hC/N2vBMAJLFzyydhA15gKyAEYJmMOqSgm/ih1rnrjX h7E2LyiAwx1UiI9ItNgJjzaXh88kUKCjrSqaA7TAQNm3YvGRK9Ji6174C3Jdem79lmdi ZDXw== 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=JqV6vXrezmLuLaRTN7OB6qdkXyFh2UzBBqpznD0O0+g=; b=go3VMupftsK3+M7as3/sDMkoVgMw04jR+MRyv3MdjTSWTRTjpdQ6GpAIfwKlgZPZcx S97yAxpcrlr9+YoFH77BCjCMmDISotshVKbzYCSvozM8N5TOsrJkBOzrBb5B4GRv1956 FWjMa1JIOnCRFqgdIW6acVqAreUWUbeiBuX9Yc25nBhaHfaVNpm0kWaxjO5CrSkDa/yU DvrXWo6bbqcP4hzroaWVyO4hiDSzwiltjLyVH97usN5p3Q7g/4+NM8Fr9xHmWd7JpZI4 AgLADwVDY/YZiZOQyC41R38ApWXlVQ+7aL9a2fJGz5Ux1e5Dp44XDnuJQ+UKF6+aV0Vt UIHA== X-Gm-Message-State: AOAM530V7NgV4g6/7KZPUPWC7hZkLmckhdpcFZtO/BDRefGCgrw7ftvp Sqm/zCe58EJDHuCl/PZiaXOXYf5TSeY= X-Google-Smtp-Source: ABdhPJzJ6T0pwGZhmULn0hWKAOar9vUqr/S3THLLZFXjFe2Ysn+l3dN1jryVxdL2zzt9XqTEtfypPw== X-Received: by 2002:a0c:be02:: with SMTP id k2mr16673963qvg.49.1605904837482; Fri, 20 Nov 2020 12:40:37 -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 z11sm2631963qkz.38.2020.11.20.12.40.36 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:36 -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 0AKKeZWK029444 for ; Fri, 20 Nov 2020 20:40:35 GMT Subject: [PATCH v2 077/118] NFSD: Replace READ* macros in nfsd4_decode_setxattr() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:35 -0500 Message-ID: <160590483568.1340.3137629344040051927.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index e1f8de971c0a..6c471fa1fae3 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -2136,11 +2136,11 @@ static __be32 nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, struct nfsd4_setxattr *setxattr) { - DECODE_HEAD; u32 flags, maxcount, size; + __be32 status; - READ_BUF(4); - flags = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &flags) < 0) + return nfserr_bad_xdr; if (flags > SETXATTR4_REPLACE) return nfserr_inval; @@ -2153,8 +2153,8 @@ nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, maxcount = svc_max_payload(argp->rqstp); maxcount = min_t(u32, XATTR_SIZE_MAX, maxcount); - READ_BUF(4); - size = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &size) < 0) + return nfserr_bad_xdr; if (size > maxcount) return nfserr_xattr2big; @@ -2163,12 +2163,12 @@ nfsd4_decode_setxattr(struct nfsd4_compoundargs *argp, struct xdr_buf payload; if (!xdr_stream_subsegment(argp->xdr, &payload, size)) - goto xdr_error; + return nfserr_bad_xdr; status = nfsd4_vbuf_from_vector(argp, &payload, &setxattr->setxa_buf, size); } - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:40:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922447 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B5212C6379F for ; Fri, 20 Nov 2020 20:40:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6B0B922464 for ; Fri, 20 Nov 2020 20:40:51 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G9jhztv4" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730873AbgKTUko (ORCPT ); Fri, 20 Nov 2020 15:40:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728396AbgKTUko (ORCPT ); Fri, 20 Nov 2020 15:40:44 -0500 Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DFEE6C0613CF for ; Fri, 20 Nov 2020 12:40:43 -0800 (PST) Received: by mail-qv1-xf41.google.com with SMTP id z17so5298056qvy.11 for ; Fri, 20 Nov 2020 12:40:43 -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=JF5vHd/vretYpFNtvhWN9jzZosT2S7u/HmKvcWz+5+M=; b=G9jhztv4m81eUDLLp68k0ttLK2aczT/QGFEqsxgGONsqlM/mXCB3G+3VknDvTknKf2 mMzgY12SWN94DP5qdqmYpIItrl33uR+Dd0vd2mSW8T76CKkFQygtb7OAZ/unFI6A8y+8 YiyVkIdJk63F/zGKpglPbRPSSU/VzA+tJLoTkNWCwG0p+4qCFYirNCOaHoHQ6QS6Opg6 EPupSgRv1u7p+ThgBaXlQmYAzGkFQt8bxU1nWHtSBZIxAKqySFTyRTq/0/uel1DV1Xjz INUQheXGKxURSZjVKh62MZLEZKKU+5AszVqq7SGNPr8ejsDqWJG73bLv4C5XDqXqkLcr pgJQ== 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=JF5vHd/vretYpFNtvhWN9jzZosT2S7u/HmKvcWz+5+M=; b=EILw4KMCrVuE+9rDwyxOINlasLCLG6oKcPAi3uOf79NcKMysqgC4DrcMr9VkDieTyz SmIh4k2e2fBSaXuKIhfK9SX8s34ca8F7Q30c9Y1+QhcUqGSZsSOHfplAMoAcbHTjzAgw gK/Gp7x9Zu3FbpNw7HczfKW+J4bqJNMV79ZoQBhot1X6//AKbgw2dgFPd38KWB8E1+QG QBkQw8uehjTWr8G1TRP9I1RP+wRWnWu/OhgQ/Kjg7bV3tElsUEW+YLXSgIPr12CVlOA2 s9XTb+cszvRiFbH39pIodbfWhZtZtAg9sArh2LxUta/QUCxvNmYYbrgBvUaGjfWZN1uI wR/A== X-Gm-Message-State: AOAM533S+7Ye4qvI8Lb9/inu5kr3r6qSeGWFJlyPYGJ0T50NAiL0C29u Gzc2bJlDG0XX0evQ1OH5wuRoeaaprMQ= X-Google-Smtp-Source: ABdhPJzMovs+qNG1JEsUGk1haSbkVDzS6dAO/7TGBkmmaOEt/pM8cGT5J2mbOCdS3bzJKQuINSu/0Q== X-Received: by 2002:a0c:a105:: with SMTP id d5mr18651955qva.35.1605904842873; Fri, 20 Nov 2020 12:40:42 -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 d21sm2607577qtn.75.2020.11.20.12.40.41 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:42 -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 0AKKefjl029447 for ; Fri, 20 Nov 2020 20:40:41 GMT Subject: [PATCH v2 078/118] NFSD: Replace READ* macros in nfsd4_decode_listxattrs() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:41 -0500 Message-ID: <160590484108.1340.1915332985466950187.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 6c471fa1fae3..84c95a255826 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -2175,11 +2175,10 @@ static __be32 nfsd4_decode_listxattrs(struct nfsd4_compoundargs *argp, struct nfsd4_listxattrs *listxattrs) { - DECODE_HEAD; u32 maxcount; - READ_BUF(12); - p = xdr_decode_hyper(p, &listxattrs->lsxa_cookie); + if (xdr_stream_decode_u64(argp->xdr, &listxattrs->lsxa_cookie) < 0) + return nfserr_bad_xdr; /* * If the cookie is too large to have even one user.x attribute @@ -2189,7 +2188,8 @@ nfsd4_decode_listxattrs(struct nfsd4_compoundargs *argp, (XATTR_LIST_MAX / (XATTR_USER_PREFIX_LEN + 2))) return nfserr_badcookie; - maxcount = be32_to_cpup(p++); + if (xdr_stream_decode_u32(argp->xdr, &maxcount) < 0) + return nfserr_bad_xdr; if (maxcount < 8) /* Always need at least 2 words (length and one character) */ return nfserr_inval; @@ -2197,7 +2197,7 @@ nfsd4_decode_listxattrs(struct nfsd4_compoundargs *argp, maxcount = min(maxcount, svc_max_payload(argp->rqstp)); listxattrs->lsxa_maxcount = maxcount; - DECODE_TAIL; + return nfs_ok; } static __be32 From patchwork Fri Nov 20 20:40:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922451 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3AD3C64E7B for ; Fri, 20 Nov 2020 20:40:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 645E522464 for ; Fri, 20 Nov 2020 20:40:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BegGf7s2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731713AbgKTUkv (ORCPT ); Fri, 20 Nov 2020 15:40:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731174AbgKTUkv (ORCPT ); Fri, 20 Nov 2020 15:40:51 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8BEB8C0613CF for ; Fri, 20 Nov 2020 12:40:49 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id r7so10226394qkf.3 for ; Fri, 20 Nov 2020 12:40:49 -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=UYbZi3OMFErnEz09Wuzkp3V6XENwa6DGvM6duYdOzoU=; b=BegGf7s2RTwKwQZ843flLvT84MDegnE3eRRaFH1H1eP9zKoH46HLPGZ0Io4j9/NCUL JmFjgbQ3XTmemUFiLdV7vy3eRkdJZqfynFzzqQGuIKYyVGXLQgb9ODH83Te3jyvfJG0O S4gVk09MY0uITR+imraJivc+LjQqRg2meKanYEujW1AR1zY29Ohwh3U48NzDZJpzP1kZ neS+Qy8c80RhCsbOrjKPmeL0zxeiuAX2NZ5Cw1ywSjz08DMFswfd4wrtjpC29QCJPjZA uQbWvIrNwFfl5m8Z89wfEnDU/qs7ZDEWLI0h7lW6Z5VlZqnC/yPm1y7mmRQyRY5pciU7 cNfQ== 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=UYbZi3OMFErnEz09Wuzkp3V6XENwa6DGvM6duYdOzoU=; b=c3DtJB3ousg5MZAK00lkCv526CMtRPOSdDomUbKMbz5zcS1lK+b/eedYYOMJAYmKZt uBQ8qlf+zLjsXjNyKoHB4E7xJ9GuGDJvH8+h7YCvOw6Y+XI8fL82S9QSoQm69v+vu6uH zS9Ph2/gAJLApQcwphaq5uAsMkU7rFN/Tz0smu2JcY2hvkEJ14WBeFvbZKcPitUcl36A KhAn73YrNa1kMbGn5KyEFkwo4vmb50XUXShFPLE4p4mgNXMNqejCRAyDvTs2x4fCHo1J A937VPV9L9Jq8x3LAkD8t6hL8/fOcFQyFEF5h+569F66vC2GkwJem0n/IjW01UMcSEul amlw== X-Gm-Message-State: AOAM531Aiiijd23WKnDtYeMjAsXvOL/tVBkxZB+xiZr2Km2kt62IqZ1Y 2Zm/u5PiLbiiFT4J74+wI7sgnedXUAs= X-Google-Smtp-Source: ABdhPJzrl6HJWHhyIVHJfTuJ1FC2YtL9+gInmF15ywddEpunEBAsqe/LMOMQHeHGOlBWJ27wLGEqRA== X-Received: by 2002:a05:620a:1087:: with SMTP id g7mr17963177qkk.457.1605904848353; Fri, 20 Nov 2020 12:40:48 -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 k4sm2746165qki.2.2020.11.20.12.40.47 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:47 -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 0AKKekP4029450 for ; Fri, 20 Nov 2020 20:40:46 GMT Subject: [PATCH v2 079/118] NFSD: Replace READ* macros in nfsd4_decode_compound() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:46 -0500 Message-ID: <160590484650.1340.1386741469268410722.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs4proc.c | 2 + fs/nfsd/nfs4xdr.c | 70 ++++++++++++++++++++++------------------------------ fs/nfsd/xdr4.h | 2 + 3 files changed, 31 insertions(+), 43 deletions(-) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 07756483aa70..b1a3f5cc8319 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -3282,7 +3282,7 @@ int nfsd4_max_reply(struct svc_rqst *rqstp, struct nfsd4_op *op) void warn_on_nonidempotent_op(struct nfsd4_op *op) { if (OPDESC(op)->op_flags & OP_MODIFIES_SOMETHING) { - pr_err("unable to encode reply to nonidempotent op %d (%s)\n", + pr_err("unable to encode reply to nonidempotent op %u (%s)\n", op->opnum, nfsd4_op_name(op->opnum)); WARN_ON_ONCE(1); } diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index 84c95a255826..da9b458cf9dc 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -184,28 +184,6 @@ svcxdr_dupstr(struct nfsd4_compoundargs *argp, void *buf, u32 len) return p; } -/** - * savemem - duplicate a chunk of memory for later processing - * @argp: NFSv4 compound argument structure to be freed with - * @p: pointer to be duplicated - * @nbytes: length to be duplicated - * - * Returns a pointer to a copy of @nbytes bytes of memory at @p - * that are preserved until processing of the NFSv4 compound - * operation described by @argp finishes. - */ -static char *savemem(struct nfsd4_compoundargs *argp, __be32 *p, int nbytes) -{ - void *ret; - - ret = svcxdr_tmpalloc(argp, nbytes); - if (!ret) - return NULL; - memcpy(ret, p, nbytes); - return ret; -} - - /* * NFSv4 basic data type decoders */ @@ -2327,40 +2305,51 @@ nfsd4_opnum_in_range(struct nfsd4_compoundargs *argp, struct nfsd4_op *op) static __be32 nfsd4_decode_compound(struct nfsd4_compoundargs *argp) { - DECODE_HEAD; struct nfsd4_op *op; bool cachethis = false; int auth_slack= argp->rqstp->rq_auth_slack; int max_reply = auth_slack + 8; /* opcnt, status */ int readcount = 0; int readbytes = 0; + __be32 *p; int i; - READ_BUF(4); - argp->taglen = be32_to_cpup(p++); - READ_BUF(argp->taglen); - SAVEMEM(argp->tag, argp->taglen); - READ_BUF(8); - argp->minorversion = be32_to_cpup(p++); - argp->opcnt = be32_to_cpup(p++); - max_reply += 4 + (XDR_QUADLEN(argp->taglen) << 2); - - if (argp->taglen > NFSD4_MAX_TAGLEN) - goto xdr_error; + if (xdr_stream_decode_u32(argp->xdr, &argp->taglen) < 0) + return nfserr_bad_xdr; + max_reply += XDR_UNIT; + argp->tag = NULL; + if (unlikely(argp->taglen)) { + if (argp->taglen > NFSD4_MAX_TAGLEN) + return nfserr_bad_xdr; + p = xdr_inline_decode(argp->xdr, argp->taglen); + if (!p) + return nfserr_bad_xdr; + argp->tag = svcxdr_tmpalloc(argp, argp->taglen); + if (!argp->tag) + return nfserr_jukebox; + memcpy(argp->tag, p, argp->taglen); + max_reply += xdr_align_size(argp->taglen); + } + + if (xdr_stream_decode_u32(argp->xdr, &argp->minorversion) < 0) + return nfserr_bad_xdr; + if (xdr_stream_decode_u32(argp->xdr, &argp->opcnt) < 0) + return nfserr_bad_xdr; + /* * NFS4ERR_RESOURCE is a more helpful error than GARBAGE_ARGS * here, so we return success at the xdr level so that * nfsd4_proc can handle this is an NFS-level error. */ if (argp->opcnt > NFSD_MAX_OPS_PER_COMPOUND) - return 0; + return nfs_ok; if (argp->opcnt > ARRAY_SIZE(argp->iops)) { argp->ops = kzalloc(argp->opcnt * sizeof(*argp->ops), GFP_KERNEL); if (!argp->ops) { argp->ops = argp->iops; dprintk("nfsd: couldn't allocate room for COMPOUND\n"); - goto xdr_error; + return nfserr_bad_xdr; } } @@ -2371,9 +2360,8 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) op = &argp->ops[i]; op->replay = NULL; - READ_BUF(4); - op->opnum = be32_to_cpup(p++); - + if (xdr_stream_decode_u32(argp->xdr, &op->opnum) < 0) + return nfserr_bad_xdr; if (nfsd4_opnum_in_range(argp, op)) op->status = nfsd4_dec_ops[op->opnum](argp, &op->u); else { @@ -2415,7 +2403,7 @@ nfsd4_decode_compound(struct nfsd4_compoundargs *argp) if (readcount > 1 || max_reply > PAGE_SIZE - auth_slack) clear_bit(RQ_SPLICE_OK, &argp->rqstp->rq_flags); - DECODE_TAIL; + return nfs_ok; } static __be32 *encode_change(__be32 *p, struct kstat *stat, struct inode *inode, @@ -5325,7 +5313,7 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op) if (op->status && opdesc && !(opdesc->op_flags & OP_NONTRIVIAL_ERROR_ENCODE)) goto status; - BUG_ON(op->opnum < 0 || op->opnum >= ARRAY_SIZE(nfsd4_enc_ops) || + BUG_ON(op->opnum >= ARRAY_SIZE(nfsd4_enc_ops) || !nfsd4_enc_ops[op->opnum]); encoder = nfsd4_enc_ops[op->opnum]; op->status = encoder(resp, op->status, &op->u); diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index facc5762bf83..2c31f3a7d7c7 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -615,7 +615,7 @@ struct nfsd4_copy_notify { }; struct nfsd4_op { - int opnum; + u32 opnum; const struct nfsd4_operation * opdesc; __be32 status; union nfsd4_op_u { From patchwork Fri Nov 20 20:40:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922471 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5D1CEC2D0E4 for ; Fri, 20 Nov 2020 20:41:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0026222464 for ; Fri, 20 Nov 2020 20:41:19 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nzSzKgGN" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731714AbgKTUkz (ORCPT ); Fri, 20 Nov 2020 15:40:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731564AbgKTUkz (ORCPT ); Fri, 20 Nov 2020 15:40:55 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C65CCC0613CF for ; Fri, 20 Nov 2020 12:40:54 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id q5so10176686qkc.12 for ; Fri, 20 Nov 2020 12:40:54 -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=jMeJzSTHZgInT0J97QhxshVAsehGP3IrbAcNkx8zxfk=; b=nzSzKgGNxGrpmB+Jm+5Oaps6DjL/IO5eZ8jSLth7xswZfk7xM65cyVx63GkBWGQj0L +DqUUSVfPoumt1Fo8kMpQgSe+fXAoQWFF5+w4lpr36MMHFyRs6NDSyn8uj6KarTFjWVC 06p1NoPordww99dvNn29wJmaC8jhqtBR0qroGsV6zcCrQQcIOa1hgGzvlXn2u0/hVjcl 33r5ka8rKSWaC5FrkXw5tMyLS4qF51cLkxdfamHRXxzU5TYoYJp6j8x9xMfCUkIQg1Jw eozXoVCkBzazRhx9vyTyc+7IrPyC0Udt6sEXq4RnIkUpGqB/3f17jhspchxrzwuT6AX5 4uCQ== 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=jMeJzSTHZgInT0J97QhxshVAsehGP3IrbAcNkx8zxfk=; b=i1vKo4LUsR7MiX+0bXut+RSHd4y9VnlZTd/vvbea/0bsvWPlAA+qvA9DhGeW+fyy0l GE2FD5i1AQD2kvOlW27Massy1oROdfKbNHS1tO+8G9Dk7Mfe/586YvAo1SQURmy+mLlR Q1jg7fZQ1ykjs2ezbwLiyWCUyAsIpneJb4BkBasVATdA79hP4gT5fyB1fScQfPEv6rJY fgYeYxIx9mJrof5tR8unwMchJ66c2iaMmTasp6mHpcLA9P0I6Lxxgv3F/bm0+ZndPnHM WdLl0zv9rrhP8OgBHILYr1V0WdcS3YBgU5PqC0H289rH3cAXnQjqU+6gBxFh2y9wadVy w/2Q== X-Gm-Message-State: AOAM533Jzg3Oav7s6qAQTDKNKMAjJXCzGA8xRNc54Rv6wcMKiMrvtcIV 2XAwcmIffRLwZK/pxGafmZeMgLbwINo= X-Google-Smtp-Source: ABdhPJzC7vc7ALKvd6Ztg7yTtnG1qCkKJybm5uud6oBRtuO2cEc1X0s+NnoUd4/6Zx7I82OPCa+LPg== X-Received: by 2002:a37:8f47:: with SMTP id r68mr15131805qkd.262.1605904853708; Fri, 20 Nov 2020 12:40:53 -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 s7sm2716902qkm.124.2020.11.20.12.40.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:53 -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 0AKKepjp029453 for ; Fri, 20 Nov 2020 20:40:51 GMT Subject: [PATCH v2 080/118] NFSD: Remove macros that are no longer used From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:51 -0500 Message-ID: <160590485189.1340.10598533794363592019.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Now that all the NFSv4 decoder functions have been converted to make direct calls to the xdr helpers, remove the unused C macros. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4xdr.c | 40 ---------------------------------------- fs/nfsd/xdr4.h | 9 --------- 2 files changed, 49 deletions(-) diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c index da9b458cf9dc..b101b8b3ddbe 100644 --- a/fs/nfsd/nfs4xdr.c +++ b/fs/nfsd/nfs4xdr.c @@ -100,45 +100,6 @@ check_filename(char *str, int len) return 0; } -#define DECODE_HEAD \ - __be32 *p; \ - __be32 status -#define DECODE_TAIL \ - status = 0; \ -out: \ - return status; \ -xdr_error: \ - dprintk("NFSD: xdr error (%s:%d)\n", \ - __FILE__, __LINE__); \ - status = nfserr_bad_xdr; \ - goto out - -#define READMEM(x,nbytes) do { \ - x = (char *)p; \ - p += XDR_QUADLEN(nbytes); \ -} while (0) -#define SAVEMEM(x,nbytes) do { \ - if (!(x = (p==argp->tmp || p == argp->tmpp) ? \ - savemem(argp, p, nbytes) : \ - (char *)p)) { \ - dprintk("NFSD: xdr error (%s:%d)\n", \ - __FILE__, __LINE__); \ - goto xdr_error; \ - } \ - p += XDR_QUADLEN(nbytes); \ -} while (0) -#define COPYMEM(x,nbytes) do { \ - memcpy((x), p, nbytes); \ - p += XDR_QUADLEN(nbytes); \ -} while (0) -#define READ_BUF(nbytes) \ - do { \ - p = xdr_inline_decode(argp->xdr,\ - nbytes); \ - if (!p) \ - goto xdr_error; \ - } while (0) - static int zero_clientid(clientid_t *clid) { return (clid->cl_boot == 0) && (clid->cl_id == 0); @@ -5406,7 +5367,6 @@ nfs4svc_decode_compoundargs(struct svc_rqst *rqstp, __be32 *p) struct nfsd4_compoundargs *args = rqstp->rq_argp; /* svcxdr_tmp_alloc */ - args->tmpp = NULL; args->to_free = NULL; args->xdr = &rqstp->rq_xdr_stream; diff --git a/fs/nfsd/xdr4.h b/fs/nfsd/xdr4.h index 2c31f3a7d7c7..e12fbe382e3f 100644 --- a/fs/nfsd/xdr4.h +++ b/fs/nfsd/xdr4.h @@ -386,13 +386,6 @@ struct nfsd4_setclientid_confirm { nfs4_verifier sc_confirm; }; -struct nfsd4_saved_compoundargs { - __be32 *p; - __be32 *end; - int pagelen; - struct page **pagelist; -}; - struct nfsd4_test_stateid_id { __be32 ts_id_status; stateid_t ts_id_stateid; @@ -696,8 +689,6 @@ struct svcxdr_tmpbuf { struct nfsd4_compoundargs { /* scratch variables for XDR decode */ - __be32 tmp[8]; - __be32 * tmpp; struct xdr_stream *xdr; struct svcxdr_tmpbuf *to_free; struct svc_rqst *rqstp; From patchwork Fri Nov 20 20:40:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922473 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E11F4C56202 for ; Fri, 20 Nov 2020 20:41:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8AAAB22464 for ; Fri, 20 Nov 2020 20:41:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nSqkypdz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731564AbgKTUlC (ORCPT ); Fri, 20 Nov 2020 15:41:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731558AbgKTUlB (ORCPT ); Fri, 20 Nov 2020 15:41:01 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1665FC0613CF for ; Fri, 20 Nov 2020 12:41:00 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id u4so10193529qkk.10 for ; Fri, 20 Nov 2020 12:41:00 -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=BT/gohtJVFGplEFiRA98nWwI59uVXx3gtpt8ZQSersM=; b=nSqkypdzvOI8Oc9qJI1SfQMWqWF9vw+/WcMd2fByUUVqGCNKFlGyDZQhckKAqkwE2K 1x/4c+G+3o2iy7mXsc9n+IhzA8pYZUr/yE8kZwflUWGZgeE9WlzzXk+8QWckWQkuqg83 G2yT+OL5XQrmwZHO5EgHy90Bsb8l+3v65nf7kK+JKSkNkWpF4tkW8hjGxGfkTIqD8kKS HIeMsq/EAN2Dqt/dyckYg4t8gCstc4AmuHna/F072JDewG4QmmtQ5DAfOsx6xWhmBiRT 3zxVtLWaF3btSUQlqtlJU6wctj4nA4G5a47S0IyyB4UzpAJXQ5s29UJKmnU+8U+Cqkwp zxeQ== 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=BT/gohtJVFGplEFiRA98nWwI59uVXx3gtpt8ZQSersM=; b=dpIOEFfKsFtZoYi5O0/4cyzuK5NTV24EuKYUB1IW2G0N4fhv18C6FRB2TbuZ1bOuDa 5VK85UgkEgfvKTleAA7nupRXSO45LATqKNbmi4ouWGBPQpgwRY/0P6JXydYNXS2xZaSa T3A8NRrBKzFRW3uq0AyM3ojGs+xLwx49gDknVG8JYXPPa/9BkkrZRoIg6wLbhA0FgKyp Xzu4yh39dQ8b7REyUNYoeM3hQZZ6cyX317E88FoHs9VTSgIAkcEM1cJKVJK5JvlIgj6B AIhBUggjf1oISEitNpAJlGJR9ve0N7p93Z0tT/0FtpAcrvqkVYCvqlddDyGPR3E9571q QpVg== X-Gm-Message-State: AOAM531Kt0o9HkRJQKbglSMmSu4GQsfOXyb/GYOEBeWaHBg5XwstnyZO v1P7hywjc1fjT8u9TXsL55G/W0f7374= X-Google-Smtp-Source: ABdhPJzUcuyofLt60UG19TmhY5gsovuGEYzTeYyG2xTQ+qez0yRCUt7N6tzVP+rgjgY32L7Yglr3xw== X-Received: by 2002:a05:620a:88e:: with SMTP id b14mr3999958qka.434.1605904859010; Fri, 20 Nov 2020 12:40:59 -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 z133sm2981855qka.20.2020.11.20.12.40.58 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:40:58 -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 0AKKevPX029456 for ; Fri, 20 Nov 2020 20:40:57 GMT Subject: [PATCH v2 081/118] NFSD: Update GETATTR3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:40:57 -0500 Message-ID: <160590485731.1340.13859840236294030487.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3proc.c | 3 +-- fs/nfsd/nfs3xdr.c | 31 +++++++++++++++++++++++++------ fs/nfsd/xdr3.h | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index 581a93b17bee..b6c2c1c837a0 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -684,7 +684,6 @@ nfsd3_proc_commit(struct svc_rqst *rqstp) * NFSv3 Server procedures. * Only the results of non-idempotent operations are cached. */ -#define nfs3svc_decode_fhandleargs nfs3svc_decode_fhandle #define nfs3svc_encode_attrstatres nfs3svc_encode_attrstat #define nfs3svc_encode_wccstatres nfs3svc_encode_wccstat #define nfsd3_mkdirargs nfsd3_createargs @@ -715,7 +714,7 @@ static const struct svc_procedure nfsd_procedures3[22] = { .pc_decode = nfs3svc_decode_fhandleargs, .pc_encode = nfs3svc_encode_attrstatres, .pc_release = nfs3svc_release_fhandle, - .pc_argsize = sizeof(struct nfsd3_fhandleargs), + .pc_argsize = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd3_attrstatres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+AT, diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index a6718b952975..f1bff0547da9 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -29,8 +29,9 @@ static u32 nfs3_ftypes[] = { /* - * XDR functions for basic NFS types + * Basic NFSv3 data types (RFC 1813 Sections 2.5 and 2.6) */ + static __be32 * encode_time3(__be32 *p, struct timespec64 *time) { @@ -46,6 +47,26 @@ decode_time3(__be32 *p, struct timespec64 *time) return p; } +static enum xdr_decode_result +svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp) +{ + __be32 *p; + u32 size; + + if (xdr_stream_decode_u32(xdr, &size) < 0) + return XDR_DECODE_FAILED; + if (size == 0 || size > NFS3_FHSIZE) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, size); + if (!p) + return XDR_DECODE_FAILED; + fh_init(fhp, NFS3_FHSIZE); + fhp->fh_handle.fh_size = size; + memcpy(&fhp->fh_handle.fh_base, p, size); + + return XDR_DECODE_DONE; +} + static __be32 * decode_fh(__be32 *p, struct svc_fh *fhp) { @@ -306,14 +327,12 @@ void fill_post_wcc(struct svc_fh *fhp) */ int -nfs3svc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p) +nfs3svc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_fhandle *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - return xdr_argsize_check(rqstp, p); + return svcxdr_decode_nfs_fh3(xdr, &args->fh); } int diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 456fcd7a1038..62ea669768cf 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -273,7 +273,7 @@ union nfsd3_xdrstore { #define NFS3_SVC_XDRSIZE sizeof(union nfsd3_xdrstore) -int nfs3svc_decode_fhandle(struct svc_rqst *, __be32 *); +int nfs3svc_decode_fhandleargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_sattrargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_diropargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_accessargs(struct svc_rqst *, __be32 *); From patchwork Fri Nov 20 20:41:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922475 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 29595C63798 for ; Fri, 20 Nov 2020 20:41:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CBAC022470 for ; Fri, 20 Nov 2020 20:41:20 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k2+p1g0M" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731715AbgKTUlH (ORCPT ); Fri, 20 Nov 2020 15:41:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33670 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731558AbgKTUlG (ORCPT ); Fri, 20 Nov 2020 15:41:06 -0500 Received: from mail-qt1-x82f.google.com (mail-qt1-x82f.google.com [IPv6:2607:f8b0:4864:20::82f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C92CC0613CF for ; Fri, 20 Nov 2020 12:41:05 -0800 (PST) Received: by mail-qt1-x82f.google.com with SMTP id p12so8106206qtp.7 for ; Fri, 20 Nov 2020 12:41:05 -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=Trk6+Qz4SdAzGD9FvX8i++7UoXmgPbDvS6GVa4q5CWY=; b=k2+p1g0MOBAoqmHT8m5eEbP9pWNwEaNFuqEEM/ci3YWhkuuzcqJphmh52dE0Ht2SfX jZ6nRMhaTCZEWCzFL5N+ZjBENAaSMHfk+7oiezFOSdC+w3EvbjDauS8YLnze5sjYuwQF JiKiNLmGY73slNcV/CNWRQ4Q8/rf2YbzrTmGuKtLpJGTUa3lt9CMnMjHqWIZNnTOtu8W G0X5tMRKGw4AaR3+9lQwCL7FTdkOHwNQKHJoN2ycX5HuD5eU+COEVoU4MXxHwF71AaQy oxrs5HRBMycdmLZs3TCkiHWWK3q6H7ppEA2+pF9s9Y+gT8Z5UQEr1GPD54QuUXWyetZj XfUA== 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=Trk6+Qz4SdAzGD9FvX8i++7UoXmgPbDvS6GVa4q5CWY=; b=KU6UMvCM4ctQVuz0+GUw0ejlm2cKhaZhVJhepZTnEnPpbr0wc/bBuUqR3TDOEaKjPN 3tFhQuiYcXKFSJFNngRTVm5lkRd3/wWXE2/0XsLTOpA4exfiVz9uY/tr+47kXl6oiNsR 3BRR+0u0gW3FMvfKVi6e0rakfjVwlS02RgTyPsXqcHsAgWBUFQEeY3vsIa2+wheDLV/m aASlFG8TV7GLJPEqVzpGAEAoGnQOg//KdE2KVis6U2bLZ74Wn35K33OggkOc7WDLvOmv 3FjlrKz3kgJISY8D3PMEvOxET9K9afyYcNJTr1Ji+hzM/JaERPYjWgN12ZhyyDKqPdSx nrmQ== X-Gm-Message-State: AOAM532VNZqEpUxWZ7m8h6pkVxUWGS0RFLKt+8TiexlXMqDj74XH6th0 hs4jawe5W/3veSsrEb2Lf2/LIxNEBZk= X-Google-Smtp-Source: ABdhPJwO0sdjXGyQA0qfXFto0IzG2rLBy0Xc0SmTeKTCH05rRbHntONycoUU7hz0Xi6qGlczXrVjBw== X-Received: by 2002:ac8:4748:: with SMTP id k8mr18489335qtp.336.1605904864192; Fri, 20 Nov 2020 12:41:04 -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 72sm2626104qkn.44.2020.11.20.12.41.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:03 -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 0AKKf20b029459 for ; Fri, 20 Nov 2020 20:41:02 GMT Subject: [PATCH v2 082/118] NFSD: Update ACCESS3arg decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:02 -0500 Message-ID: <160590486271.1340.11805522567454121553.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 11 ++++++----- fs/nfsd/xdr3.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index f1bff0547da9..600bc45db66e 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -369,14 +369,15 @@ nfs3svc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_accessargs *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - args->access = ntohl(*p++); + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->access) < 0) + return XDR_DECODE_FAILED; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 62ea669768cf..a4dce4baec7c 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -25,7 +25,7 @@ struct nfsd3_diropargs { struct nfsd3_accessargs { struct svc_fh fh; - unsigned int access; + __u32 access; }; struct nfsd3_readargs { From patchwork Fri Nov 20 20:41:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922477 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6337CC6379F for ; Fri, 20 Nov 2020 20:41:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0C22622464 for ; Fri, 20 Nov 2020 20:41:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qBzVU0AI" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731558AbgKTUlM (ORCPT ); Fri, 20 Nov 2020 15:41:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33688 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730631AbgKTUlM (ORCPT ); Fri, 20 Nov 2020 15:41:12 -0500 Received: from mail-qv1-xf43.google.com (mail-qv1-xf43.google.com [IPv6:2607:f8b0:4864:20::f43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2FFCC0613CF for ; Fri, 20 Nov 2020 12:41:10 -0800 (PST) Received: by mail-qv1-xf43.google.com with SMTP id y11so5300928qvu.10 for ; Fri, 20 Nov 2020 12:41:10 -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=A4SfpDgUKmiQOphape7Rod4t6lp5H5w0YY/Q8qkDK0s=; b=qBzVU0AISmT7X1GHehXcsq+4WZxx4s3iHiBrqe3NT64EEy30M5JGj1XOn4Y++OAoMI 0Q/RRx+Gvye/50deD6dR9vj3BRzH26Hq1obzeD+wd0XPmDrWkd/NWmKGie+Oeiz1jY6D EEbVCDcM8DHSkIWSDRzV1FhFKSfWpx7Me0cyMlsAZRQwL/WC7aLx9Pi6TevgF/tIK36M 8FVmGwIpO/Hb2PaibQMzIVf1Na/vZ55Dy97M4JIxF3CVk1CwerETi9Wkh5xyWAITzGS/ PxCWPId4J/wXykQocaHiS3hm1h/3sWym/glwtpzV/Bn93rbZmlYFSuTTadjgbpsaOTpK SXdQ== 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=A4SfpDgUKmiQOphape7Rod4t6lp5H5w0YY/Q8qkDK0s=; b=Nrji9YElx7SfpL3y7260O/Qp84+mZl6uNqg9UVJiIaD3zHlcz64gl8N/j22XlojJfi 0nx8vcfdwiqd0B15m3x/Zt09QjHiclW5IkVP9tTO8DRcgZNdUeoMzE7E1e3FvGZc5Yxk 9qtVk3RiBznHCUNglfkrRmZJVju90rwf9al2gq8gZiQEmqagtHuZ3IQO/OQmhw3/yIt/ THaHKLFsREpy9vYnDQIUUgFmf6qUpFNOhqY8IJODXFR0V76T0S9jjF8i5iF83p0VoCaj qYujkx1wbjrEMeuOEzDsTOr9KM9gt2BoU40X3l77Ot8ecc/v0i8eoHNBAMVEqZwMWrH6 mqMQ== X-Gm-Message-State: AOAM530ycAIkTdoEXoFkKVgO1ZUskFhnDYBGKKJvPluhTlKXcE+yWpd2 KCBVSsGtJiei+1bI3sYfn18zEEk54do= X-Google-Smtp-Source: ABdhPJx8CK/aC8HUCaRsJhlh7p3RNJn3MzA/niBhUmvV2xHScIIJduMNXT6xzEomWCZDCtmRuKMQyw== X-Received: by 2002:a0c:ecc1:: with SMTP id o1mr17421419qvq.6.1605904869538; Fri, 20 Nov 2020 12:41:09 -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 w15sm2836341qkf.52.2020.11.20.12.41.08 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:08 -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 0AKKf7Q2029462 for ; Fri, 20 Nov 2020 20:41:07 GMT Subject: [PATCH v2 083/118] NFSD: Update READ3arg decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:07 -0500 Message-ID: <160590486784.1340.9612166122815548998.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org The code that sets up rq_vec is refactored so that it is now adjacent to the nfsd_read() call site where it is used. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3proc.c | 23 ++++++++++++++++++----- fs/nfsd/nfs3xdr.c | 27 +++++++-------------------- fs/nfsd/xdr3.h | 1 - 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index b6c2c1c837a0..5c0664486485 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -144,25 +144,38 @@ nfsd3_proc_read(struct svc_rqst *rqstp) { struct nfsd3_readargs *argp = rqstp->rq_argp; struct nfsd3_readres *resp = rqstp->rq_resp; - u32 max_blocksize = svc_max_payload(rqstp); - unsigned long cnt = min(argp->count, max_blocksize); + u32 max_blocksize = svc_max_payload(rqstp); + unsigned int len; + int v; + + argp->count = min_t(u32, argp->count, max_blocksize); dprintk("nfsd: READ(3) %s %lu bytes at %Lu\n", SVCFH_fmt(&argp->fh), (unsigned long) argp->count, (unsigned long long) argp->offset); + v = 0; + len = argp->count; + while (len > 0) { + struct page *page = *(rqstp->rq_next_page++); + + rqstp->rq_vec[v].iov_base = page_address(page); + rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE); + len -= rqstp->rq_vec[v].iov_len; + v++; + } + /* Obtain buffer pointer for payload. * 1 (status) + 22 (post_op_attr) + 1 (count) + 1 (eof) * + 1 (xdr opaque byte count) = 26 */ - resp->count = cnt; + resp->count = argp->count; svc_reserve_auth(rqstp, ((1 + NFS3_POST_OP_ATTR_WORDS + 3)<<2) + resp->count +4); fh_copy(&resp->fh, &argp->fh); resp->status = nfsd_read(rqstp, &resp->fh, argp->offset, - rqstp->rq_vec, argp->vlen, &resp->count, - &resp->eof); + rqstp->rq_vec, v, &resp->count, &resp->eof); return rpc_success; } diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 600bc45db66e..2b51686c238f 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -383,31 +383,18 @@ nfs3svc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_readargs *args = rqstp->rq_argp; - unsigned int len; - int v; - u32 max_blocksize = svc_max_payload(rqstp); - p = decode_fh(p, &args->fh); + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, sizeof(__be32) * 3); if (!p) - return 0; + return XDR_DECODE_FAILED; p = xdr_decode_hyper(p, &args->offset); + args->count = be32_to_cpup(p); - args->count = ntohl(*p++); - len = min(args->count, max_blocksize); - - /* set up the kvec */ - v=0; - while (len > 0) { - struct page *p = *(rqstp->rq_next_page++); - - rqstp->rq_vec[v].iov_base = page_address(p); - rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE); - len -= rqstp->rq_vec[v].iov_len; - v++; - } - args->vlen = v; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index a4dce4baec7c..7dfeeaa4e1df 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -32,7 +32,6 @@ struct nfsd3_readargs { struct svc_fh fh; __u64 offset; __u32 count; - int vlen; }; struct nfsd3_writeargs { From patchwork Fri Nov 20 20:41:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922479 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A5BB8C6379D for ; Fri, 20 Nov 2020 20:41:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4912622470 for ; Fri, 20 Nov 2020 20:41:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SYR6Ze97" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731515AbgKTUlQ (ORCPT ); Fri, 20 Nov 2020 15:41:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33700 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730631AbgKTUlQ (ORCPT ); Fri, 20 Nov 2020 15:41:16 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E58F3C0613CF for ; Fri, 20 Nov 2020 12:41:15 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id y197so10211379qkb.7 for ; Fri, 20 Nov 2020 12:41:15 -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=YFUG6VqpJOpmkb5ByhOUjmvLvwfm4lNUw7Azvk5bWT4=; b=SYR6Ze974sbhlGxJkSjnMMQjDrIQft8G8xD7lF1DW8L6reegz7gCLvN43g2Kqy4/xv 81RCPPsqWTiakSwpeC+RyoESnq72wuhfz3HhTKzyS3TxW025m23JrOLyKeT0BoHB1AqP TTu/OxZ7L3lKd3LHSif2cVVKNWFQ/tC3jQ+QQqmWZ1J+pOASeFTPTi/n0Bd5db/Xl56l vHo5csDj+lPcZHDHljjUzREp8XsE/42ylrhmhYKVWHtRA/Z0LY96sqnPlfaCOX3WCqv6 l3emwdw87iL8bR67wGXISD/BmYDnsOVj3FkHV0CCGzR9hFG3G1TcE2xv4Xga3rg0X088 5/RQ== 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=YFUG6VqpJOpmkb5ByhOUjmvLvwfm4lNUw7Azvk5bWT4=; b=lz33IMTdHmCCwhx/GFa5/IAFjUTf2JOwI81jDNyupe5PRpHrZJt/rzlMip0RXZpaGL EDH55hwoT9bgnUfwHwqT0IkRpfuNVtL3Rs4jeEoMJGj8/1rSQJmR1PBn+MZSR4vqdsAJ PHxjskRH9FItcnERzbZVqwC2vPPtqKo5JEBc98HsFik30iHgE8yCgj236Ad14+9Qig2F KJad4jruVZUxLsIuyWgIvWt3R9c9WChtxN6T7SJx2yZBOQlvw2VP6h6pXoqEcMrG7xCL 0ZPeYWWLMTvlhWfaZ5uDiE3jztWW7AT7PX23rp2stkHLbO3mzVP5Y7sJrN7pmTK/V2mq vlRA== X-Gm-Message-State: AOAM530ZQqSR/ZtAgkKxy0s3MBB4OwrzT6/gukq8WLUqCgKzob/3+TQG 4F6FD/fR4XFlOSiATnHqkU8EUExMH5E= X-Google-Smtp-Source: ABdhPJzelyGvhqzyTR4zczqH1/kZTrOSSJeXfFXfOkb6eZnj2Gp4KOnp9/Ucpdvjm9gh6J96WGmbJQ== X-Received: by 2002:a37:6143:: with SMTP id v64mr18384973qkb.490.1605904874856; Fri, 20 Nov 2020 12:41:14 -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 c27sm2754593qkk.57.2020.11.20.12.41.13 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:14 -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 0AKKfDmA029465 for ; Fri, 20 Nov 2020 20:41:13 GMT Subject: [PATCH v2 084/118] NFSD: Update WRITE3arg decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:13 -0500 Message-ID: <160590487318.1340.4098500934407742189.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org As part of the update, open code that sanity-checks the size of the data payload against the length of the RPC Call message has to be re-implemented to use xdr_stream infrastructure. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 56 +++++++++++++++++++++-------------------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 2b51686c238f..38dad447a760 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -400,53 +400,41 @@ nfs3svc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_writeargs *args = rqstp->rq_argp; - unsigned int len, hdr, dlen; u32 max_blocksize = svc_max_payload(rqstp); struct kvec *head = rqstp->rq_arg.head; struct kvec *tail = rqstp->rq_arg.tail; + size_t remaining; - p = decode_fh(p, &args->fh); + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, sizeof(__be32) * 5); if (!p) - return 0; + return XDR_DECODE_FAILED; p = xdr_decode_hyper(p, &args->offset); + args->count = be32_to_cpup(p++); + args->stable = be32_to_cpup(p++); - args->count = ntohl(*p++); - args->stable = ntohl(*p++); - len = args->len = ntohl(*p++); - if ((void *)p > head->iov_base + head->iov_len) - return 0; - /* - * The count must equal the amount of data passed. - */ - if (args->count != args->len) - return 0; - - /* - * Check to make sure that we got the right number of - * bytes. - */ - hdr = (void*)p - head->iov_base; - dlen = head->iov_len + rqstp->rq_arg.page_len + tail->iov_len - hdr; - /* - * Round the length of the data which was specified up to - * the next multiple of XDR units and then compare that - * against the length which was actually received. - * Note that when RPCSEC/GSS (for example) is used, the - * data buffer can be padded so dlen might be larger - * than required. It must never be smaller. - */ - if (dlen < XDR_QUADLEN(len)*4) - return 0; + /* opaque data */ + args->len = be32_to_cpup(p++); + /* request sanity */ + if (args->count != args->len) + return XDR_DECODE_FAILED; + remaining = head->iov_len + rqstp->rq_arg.page_len + tail->iov_len; + remaining -= xdr_stream_pos(xdr); + if (remaining < xdr_align_size(args->len)) + return XDR_DECODE_FAILED; if (args->count > max_blocksize) { args->count = max_blocksize; - len = args->len = max_blocksize; + args->len = max_blocksize; } - args->first.iov_base = (void *)p; - args->first.iov_len = head->iov_len - hdr; - return 1; + args->first.iov_base = p; + args->first.iov_len = head->iov_len - xdr_stream_pos(xdr); + + return XDR_DECODE_DONE; } int From patchwork Fri Nov 20 20:41:18 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922481 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2FF8EC2D0E4 for ; Fri, 20 Nov 2020 20:41:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D2D8022464 for ; Fri, 20 Nov 2020 20:41:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iujlnzik" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730631AbgKTUlW (ORCPT ); Fri, 20 Nov 2020 15:41:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33716 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729193AbgKTUlV (ORCPT ); Fri, 20 Nov 2020 15:41:21 -0500 Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 664F7C061A04 for ; Fri, 20 Nov 2020 12:41:21 -0800 (PST) Received: by mail-qv1-xf41.google.com with SMTP id z17so5298793qvy.11 for ; Fri, 20 Nov 2020 12:41:21 -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=w54Di6aQJXYcC47cTVvuB25exFlgjYN0swGOqbGN0Ww=; b=iujlnzikXQ2gwg8U3j5YbHTQC9EMflQyHqDAec8esBX/uqAAHpCylB+b9GhkZ8Tjc2 Q8Mi2SnvuoOnDhp4z50SbXRAGKUASskeyZSFs/Re2FcmJCtQIasBbIc9dY5mCiV/+dwJ CsNW0nGNJRjb3f433YmJnkQEC58yrCcWZEB91Pqq+fDuulZLpiqOj4ZbWo9eUr8AJusc AV2uVChnu5Y6QyU0ZA2P5xbZP7g66SoI9U+hZ2iEZgo01rlfnZ8qXj5jO+mur6VfGeO+ 4eu5OZg54QdoCcHeWT3ZtBKCckNsmkMQN1jCtNjCVDKZ1mqDJ1Bwhjo7Te1ttmVVpAcO vwxw== 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=w54Di6aQJXYcC47cTVvuB25exFlgjYN0swGOqbGN0Ww=; b=gCtqYdemQpsXzLJj5M87QRsLD7Ej/xaQHNQ4b6RLL6aI5siWndadh2PtwcXXUEivYA 5CUcj50cKTop/usPb1+whRilcAkzQO0EJjoYJ/TrBWH7aSRAgwkvbgUSno8HuelMfgQt rkkaOjniD0cer9Y/QGe5n8vDBoHP33zubJ5/qvMfpC6RjUS/tRsdAk1ToxWlOt2hO2dZ fRiT091unCEZRW1+PZvFr3Zvf7wxkKquj0SyFIQO+f4VB5f1G1kJSRWOse0FRxPQfIbR OuVAuSYieoteZFBZjG0RN5lL2vaCAPNvUi+g4b9q35u6YC1MsjRTKA5mS781mxGNoxEY 0sSg== X-Gm-Message-State: AOAM531ZIlXNuRWavQmWd+E9r8pdzUyJZdqHhc7N8gyBPwZx67fFmx9G iEpHf79ByAdaTt5czMax5FYE7lJ46Pw= X-Google-Smtp-Source: ABdhPJwFu83TcKdlGRsbu2ssZ4GkpVFZwDhnVM4508axDnAfK+6y3M+6Zp/siN456cL3REv+gzXjGA== X-Received: by 2002:a0c:8d47:: with SMTP id s7mr8347808qvb.17.1605904880292; Fri, 20 Nov 2020 12:41:20 -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 p127sm2867998qkc.37.2020.11.20.12.41.19 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:19 -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 0AKKfIvI029468 for ; Fri, 20 Nov 2020 20:41:18 GMT Subject: [PATCH v2 085/118] NFSD: Update READLINK3arg decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:18 -0500 Message-ID: <160590487851.1340.4645888597133004475.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org The NFSv3 READLINK request takes a single filehandle, so it can re-use GETATTR's decoder. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3proc.c | 9 +++++---- fs/nfsd/nfs3xdr.c | 13 ------------- fs/nfsd/xdr3.h | 6 ------ 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index 5c0664486485..2c4fe7b8723d 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -124,15 +124,16 @@ nfsd3_proc_access(struct svc_rqst *rqstp) static __be32 nfsd3_proc_readlink(struct svc_rqst *rqstp) { - struct nfsd3_readlinkargs *argp = rqstp->rq_argp; + struct nfsd_fhandle *argp = rqstp->rq_argp; struct nfsd3_readlinkres *resp = rqstp->rq_resp; + char *buffer = page_address(*(rqstp->rq_next_page++)); dprintk("nfsd: READLINK(3) %s\n", SVCFH_fmt(&argp->fh)); /* Read the symlink. */ fh_copy(&resp->fh, &argp->fh); resp->len = NFS3_MAXPATHLEN; - resp->status = nfsd_readlink(rqstp, &resp->fh, argp->buffer, &resp->len); + resp->status = nfsd_readlink(rqstp, &resp->fh, buffer, &resp->len); return rpc_success; } @@ -764,10 +765,10 @@ static const struct svc_procedure nfsd_procedures3[22] = { }, [NFS3PROC_READLINK] = { .pc_func = nfsd3_proc_readlink, - .pc_decode = nfs3svc_decode_readlinkargs, + .pc_decode = nfs3svc_decode_fhandleargs, .pc_encode = nfs3svc_encode_readlinkres, .pc_release = nfs3svc_release_fhandle, - .pc_argsize = sizeof(struct nfsd3_readlinkargs), + .pc_argsize = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd3_readlinkres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+pAT+1+NFS3_MAXPATHLEN/4, diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 38dad447a760..35804abc9c1f 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -537,19 +537,6 @@ nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) return xdr_argsize_check(rqstp, p); } -int -nfs3svc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p) -{ - struct nfsd3_readlinkargs *args = rqstp->rq_argp; - - p = decode_fh(p, &args->fh); - if (!p) - return 0; - args->buffer = page_address(*(rqstp->rq_next_page++)); - - return xdr_argsize_check(rqstp, p); -} - int nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) { diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 7dfeeaa4e1df..08f909142ddf 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -70,11 +70,6 @@ struct nfsd3_renameargs { unsigned int tlen; }; -struct nfsd3_readlinkargs { - struct svc_fh fh; - char * buffer; -}; - struct nfsd3_linkargs { struct svc_fh ffh; struct svc_fh tfh; @@ -282,7 +277,6 @@ int nfs3svc_decode_createargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_mkdirargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_mknodargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_renameargs(struct svc_rqst *, __be32 *); -int nfs3svc_decode_readlinkargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_linkargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_symlinkargs(struct svc_rqst *, __be32 *); int nfs3svc_decode_readdirargs(struct svc_rqst *, __be32 *); From patchwork Fri Nov 20 20:41:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922483 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1FFC3C56202 for ; Fri, 20 Nov 2020 20:41:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BBDEC22201 for ; Fri, 20 Nov 2020 20:41:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aQS/JBLO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731585AbgKTUl1 (ORCPT ); Fri, 20 Nov 2020 15:41:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729193AbgKTUl0 (ORCPT ); Fri, 20 Nov 2020 15:41:26 -0500 Received: from mail-qk1-x72e.google.com (mail-qk1-x72e.google.com [IPv6:2607:f8b0:4864:20::72e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A024DC0613CF for ; Fri, 20 Nov 2020 12:41:26 -0800 (PST) Received: by mail-qk1-x72e.google.com with SMTP id y197so10211855qkb.7 for ; Fri, 20 Nov 2020 12:41:26 -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=+LIuNBK0rdtbtTpJjAwXmcaaFCxyCF+BELubmhBuRyA=; b=aQS/JBLOB/u/NYOSTt+iVqIi56mxxCfZyb0p3cfVqlbc9hRx6gs2iEJrvBDkpGpe/X q9iiWzOSWqs+UU6or4okx//vxvrA8MtCbQx2du8ITcK3qSrTgCBHMiovCpW3a248GEUx 46XqFsaRNvrHWbOct2gSeIw/FR/WnwE2V+BClW7uEXkjcyLF//Icot25HOQJkUFwx2O+ Vu5wvP4Hbi9RoEVW4/DL97RSVex/OY+p1ifdWhbiyIsEIk2tjFo1TbEvRqm14iq3MrDz GFKxPgjumLAoknoEKvAJJZCuzPbH9zmvTSlY5RH2A9PnOMN+kCZlGJWY+SbKi49nBUpc BQ9Q== 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=+LIuNBK0rdtbtTpJjAwXmcaaFCxyCF+BELubmhBuRyA=; b=DbTZ9WCx8xKfWidzLwJb0PRq+y3wnSJJD/Y7rhEwxtv/d1/tGVdjJrp2z+fvp+ayTB Un8k6n+Nl9ofqsLldd6CMGag5qQQSNsF80BP+rAZPF9DUiNNs1uMEpMdr1/gi5IgrMCt AUHSPzQyxspspn82vmmVgOgrKa5bZKlKx644oNmtoyaHyO1GnynmsH5f5itFXLttzOTz cI0rIvRW3X8JffPiYb8cgwFc6xMkYcfst6wKI+OSwS6nyuVEn9GIl4wG146O4caExfS7 i9/7fWm+qdE9nqTItXbCVF9cGSixsn22iIV5mkvI27eTLRFa3NUxV3SOCdOr0I2Yj0pO yu+A== X-Gm-Message-State: AOAM530UAajR3039c6epFK7htogaLfodfFNtixgNQvdGg+hwRb2qDaf/ EVt1a2prR9G9Wc1vrt/rSwaW5fPd/ew= X-Google-Smtp-Source: ABdhPJzP05TWff+gyrtREXpoh73aedayIBkdm+Vdb23qoL/ZvOHB6a/rFt8NCpnC7efxjabLoSVsJg== X-Received: by 2002:a05:620a:1415:: with SMTP id d21mr19007199qkj.275.1605904885529; Fri, 20 Nov 2020 12:41:25 -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 v16sm2862668qka.72.2020.11.20.12.41.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:24 -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 0AKKfNit029471 for ; Fri, 20 Nov 2020 20:41:23 GMT Subject: [PATCH v2 086/118] NFSD: Add helper to set up the pages where the dirlist is encoded From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:23 -0500 Message-ID: <160590488385.1340.10258347223480801893.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org De-duplicate some code that is used by both READDIR and READDIRPLUS to build the dirlist in the Reply. Because this code is not related to decoding READ arguments, it is moved to a more appropriate spot. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3proc.c | 29 +++++++++++++++++++---------- fs/nfsd/nfs3xdr.c | 20 -------------------- fs/nfsd/xdr3.h | 1 - 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c index 2c4fe7b8723d..a8aafbb4c0ac 100644 --- a/fs/nfsd/nfs3proc.c +++ b/fs/nfsd/nfs3proc.c @@ -435,6 +435,23 @@ nfsd3_proc_link(struct svc_rqst *rqstp) return rpc_success; } +static void nfsd3_init_dirlist_pages(struct svc_rqst *rqstp, + struct nfsd3_readdirres *resp, + int count) +{ + count = min_t(u32, count, svc_max_payload(rqstp)); + + /* Convert byte count to number of words (i.e. >> 2), + * and reserve room for the NULL ptr & eof flag (-2 words) */ + resp->buflen = (count >> 2) - 2; + + resp->buffer = page_address(*rqstp->rq_next_page); + while (count > 0) { + rqstp->rq_next_page++; + count -= PAGE_SIZE; + } +} + /* * Read a portion of a directory. */ @@ -452,16 +469,12 @@ nfsd3_proc_readdir(struct svc_rqst *rqstp) SVCFH_fmt(&argp->fh), argp->count, (u32) argp->cookie); - /* Make sure we've room for the NULL ptr & eof flag, and shrink to - * client read size */ - count = (argp->count >> 2) - 2; + nfsd3_init_dirlist_pages(rqstp, resp, argp->count); /* Read directory and encode entries on the fly */ fh_copy(&resp->fh, &argp->fh); - resp->buflen = count; resp->common.err = nfs_ok; - resp->buffer = argp->buffer; resp->rqstp = rqstp; offset = argp->cookie; @@ -513,16 +526,12 @@ nfsd3_proc_readdirplus(struct svc_rqst *rqstp) SVCFH_fmt(&argp->fh), argp->count, (u32) argp->cookie); - /* Convert byte count to number of words (i.e. >> 2), - * and reserve room for the NULL ptr & eof flag (-2 words) */ - resp->count = (argp->count >> 2) - 2; + nfsd3_init_dirlist_pages(rqstp, resp, argp->count); /* Read directory and encode entries on the fly */ fh_copy(&resp->fh, &argp->fh); resp->common.err = nfs_ok; - resp->buffer = argp->buffer; - resp->buflen = resp->count; resp->rqstp = rqstp; offset = argp->cookie; diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 35804abc9c1f..eceeda96f576 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -554,8 +554,6 @@ int nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_readdirargs *args = rqstp->rq_argp; - int len; - u32 max_blocksize = svc_max_payload(rqstp); p = decode_fh(p, &args->fh); if (!p) @@ -564,14 +562,6 @@ nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) args->verf = p; p += 2; args->dircount = ~0; args->count = ntohl(*p++); - len = args->count = min_t(u32, args->count, max_blocksize); - - while (len > 0) { - struct page *p = *(rqstp->rq_next_page++); - if (!args->buffer) - args->buffer = page_address(p); - len -= PAGE_SIZE; - } return xdr_argsize_check(rqstp, p); } @@ -580,8 +570,6 @@ int nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_readdirargs *args = rqstp->rq_argp; - int len; - u32 max_blocksize = svc_max_payload(rqstp); p = decode_fh(p, &args->fh); if (!p) @@ -591,14 +579,6 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p) args->dircount = ntohl(*p++); args->count = ntohl(*p++); - len = args->count = min(args->count, max_blocksize); - while (len > 0) { - struct page *p = *(rqstp->rq_next_page++); - if (!args->buffer) - args->buffer = page_address(p); - len -= PAGE_SIZE; - } - return xdr_argsize_check(rqstp, p); } diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 08f909142ddf..789a364d5e69 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -93,7 +93,6 @@ struct nfsd3_readdirargs { __u32 dircount; __u32 count; __be32 * verf; - __be32 * buffer; }; struct nfsd3_commitargs { From patchwork Fri Nov 20 20:41:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922485 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42422C56202 for ; Fri, 20 Nov 2020 20:41:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D499822201 for ; Fri, 20 Nov 2020 20:41:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eIe6G32h" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730244AbgKTUlf (ORCPT ); Fri, 20 Nov 2020 15:41:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33748 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729450AbgKTUld (ORCPT ); Fri, 20 Nov 2020 15:41:33 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 17C2EC0613CF for ; Fri, 20 Nov 2020 12:41:32 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id m65so8081820qte.11 for ; Fri, 20 Nov 2020 12:41:32 -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=/97E0ZXatAQCA568BieMnkqm5RVKI5EtF0AicBvoV4A=; b=eIe6G32hE+6zDP3lSn1mNbx7DQH6byVX1CIW3BqLnR8yVkOGi0W/BtTHnGL8YIxcgw n/m1DhWc24cu16oaKI2dMsBgup/CLR+guTnm1o4Qr48MawzyYoN9n1vNA/zMWOxHY2jN +O54qPraOgFpWEI0KHS/Kbagz/rOskRDp2uLJJTznxO66Uq6O68H48p3sljORX8hYzPn 67weBXBQ9jn/Lny/ZGAJUr1rmyhb8thMddiXkJfc74HS/BU/EVucQ3BATHBbF/A0uVE2 qygnNYd90YiRSAzcdPYueux3Hb5m1oxteGbc9xrqmp2CDRiaLPJDBZAFhwHtle2uZ1uA U31Q== 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=/97E0ZXatAQCA568BieMnkqm5RVKI5EtF0AicBvoV4A=; b=T1nIgQlXV3OEri65m9wT6FKZ0jefIaFxeLuNzhKqD9cncu3xHdPbMm0t+V08pxZRsT iDKd4SokCFfg6Vx/6eCFZykkllz6sdmDQO2PksNLXIwn191hRik3Cq46i7D5nSxrCEtc LWzaf02a9RNw5SI0vNRe71+Naoo50h3v6XOvuZ4KLV9q/s1VgcDP0jr7M1h4Ism5wnll 09UfWjBxYrApnexheJWLdlKmYL90wJYvmxG1olCDQCuQFlq/7329GoX7ZbJMlYBJqEA/ OeJ5xs/rRr/OM44KhNQsxANDSByNAt3TLzJnPkIpGjrYojIECqZAWD9iLJzVgPkEeF6x sV6Q== X-Gm-Message-State: AOAM530Yq0JpfZGppz1iQ82POWjsuni7lyLrvOjDRqSULL/u17m4JoFz zJm8+l6QI5m2UGxKM9TYVjM6SCbexc4= X-Google-Smtp-Source: ABdhPJyA7qy7ymYOLVyvezDruhEHh1eAYiuvWZc4JWLsEFNg8ukysQmBTsWbJXelgomXG4mDvaCBSw== X-Received: by 2002:aed:3882:: with SMTP id k2mr3352302qte.105.1605904890966; Fri, 20 Nov 2020 12:41:30 -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 9sm2527756qty.30.2020.11.20.12.41.30 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:30 -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 0AKKfTYj029474 for ; Fri, 20 Nov 2020 20:41:29 GMT Subject: [PATCH v2 087/118] NFSD: Update READDIR3args decoders to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:29 -0500 Message-ID: <160590488919.1340.2035631615670807514.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org As an additional clean up, neither nfsd3_proc_readdir() nor nfsd3_proc_readdirplus() make use of the dircount argument, so remove it. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 41 +++++++++++++++++++++++++---------------- fs/nfsd/xdr3.h | 1 - 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index eceeda96f576..05fa16d91564 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -553,33 +553,42 @@ nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_readdirargs *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - p = xdr_decode_hyper(p, &args->cookie); - args->verf = p; p += 2; - args->dircount = ~0; - args->count = ntohl(*p++); + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u64(xdr, &args->cookie) < 0) + return XDR_DECODE_FAILED; + args->verf = xdr_inline_decode(xdr, NFS3_COOKIEVERFSIZE); + if (!args->verf) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->count) < 0) + return XDR_DECODE_FAILED; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_readdirargs *args = rqstp->rq_argp; + u32 dircount; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - p = xdr_decode_hyper(p, &args->cookie); - args->verf = p; p += 2; - args->dircount = ntohl(*p++); - args->count = ntohl(*p++); + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u64(xdr, &args->cookie) < 0) + return XDR_DECODE_FAILED; + args->verf = xdr_inline_decode(xdr, NFS3_COOKIEVERFSIZE); + if (!args->verf) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &dircount) < 0) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->count) < 0) + return XDR_DECODE_FAILED; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 789a364d5e69..64af5b01c5d7 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -90,7 +90,6 @@ struct nfsd3_symlinkargs { struct nfsd3_readdirargs { struct svc_fh fh; __u64 cookie; - __u32 dircount; __u32 count; __be32 * verf; }; From patchwork Fri Nov 20 20:41:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922487 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 762D8C2D0E4 for ; Fri, 20 Nov 2020 20:41:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1463D22201 for ; Fri, 20 Nov 2020 20:41:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rWSTZPBo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731728AbgKTUlh (ORCPT ); Fri, 20 Nov 2020 15:41:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33764 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731726AbgKTUlh (ORCPT ); Fri, 20 Nov 2020 15:41:37 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19588C0613CF for ; Fri, 20 Nov 2020 12:41:37 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id l2so10278334qkf.0 for ; Fri, 20 Nov 2020 12:41:37 -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=1/6sezHjNuTXOvK+ZMvEJnAvamRr/1XYRJMAF83mGrM=; b=rWSTZPBonbf1BalYq4R30sukDE7tTgzMQRJuh9oIegdBOQJGLh09CoG/Fe6YL3vFYo enFPatpO0Ft7FGZ+PDSYBNzs9LXA/IDwN7y18/aHxIW5WhwnJwwEZpl1LyfsLsv8e0XK hp0a2rMrgnpIlo7TJfk8CcN/OyheURQYNsuaEfgJb89AbmvJD5WpSJuXC8g40g8VsY3O bLXRzx9dtLfWTsh+6v15tIuZNHEYvsCNEIvPgYXN2iQnU9xuURqC8InENunLnnmbzo+9 1KjyOHaRKfmjJBdmNK5LNJtPc5M/XFCqdqSYd5g1/665jLYYWEDd9vRGNrSQrLBpX9uu i+8Q== 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=1/6sezHjNuTXOvK+ZMvEJnAvamRr/1XYRJMAF83mGrM=; b=Mbq1IxhBxNASQLlNxGl8AD16Wd9feV4U+FGo8wWKALemuovWJoCl2vTFOo00mm3o2u FPtk/fL6pk6yxZ7eHIjCQGW/HjvxyZNVOzgHCkkhWoW6A0sFbLDZJRXhPOaf6uoaTMtV AB11bcRj6jDpYZ4+rPYFKpzQXov8s75Lo/EV8rcLaiFuhAo3V7F3g66NLLwp6eg471TA ETXlj10Xdho2ZA67pBsDnp44EZ91OArePm7HTdDh6jO9C7l/hX5CRJqth+kLUstSZcR1 7ETqGnT6eDyZaSQUl+6el/vAypUUjObKnIzhlNyyInB5qcjjAOKVMZzZZAFGXwU5Dcp5 P2xw== X-Gm-Message-State: AOAM532ynafTf18SHyDHQH0dZsdx4kF7OOKwWY1Yiy/s47ZsX6BsXjvQ 2pAIrACCMJ+EooBMsw2lols8dJqbznY= X-Google-Smtp-Source: ABdhPJy7FpUpQF7L4zxyDRDyiJOtQsq5Dh3TAkEhICBdcKquYJ2u0/oAN30njLKqI8mW8B6Pk+VUbA== X-Received: by 2002:a37:b985:: with SMTP id j127mr17882969qkf.282.1605904896076; Fri, 20 Nov 2020 12:41:36 -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 i9sm2691771qtp.72.2020.11.20.12.41.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:35 -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 0AKKfY5L029477 for ; Fri, 20 Nov 2020 20:41:34 GMT Subject: [PATCH v2 088/118] NFSD: Update COMMIT3arg decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:34 -0500 Message-ID: <160590489459.1340.11960263790467032127.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 05fa16d91564..a74c309ad429 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -594,14 +594,18 @@ nfs3svc_decode_readdirplusargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_commitargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_commitargs *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); + + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, sizeof(__be32) * 3); if (!p) - return 0; + return XDR_DECODE_FAILED; p = xdr_decode_hyper(p, &args->offset); - args->count = ntohl(*p++); + args->count = be32_to_cpup(p); - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } /* From patchwork Fri Nov 20 20:41:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922489 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD438C56202 for ; Fri, 20 Nov 2020 20:41:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6C31222201 for ; Fri, 20 Nov 2020 20:41:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Im9sMlJH" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731726AbgKTUln (ORCPT ); Fri, 20 Nov 2020 15:41:43 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33776 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731606AbgKTUlm (ORCPT ); Fri, 20 Nov 2020 15:41:42 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 812F2C0613CF for ; Fri, 20 Nov 2020 12:41:42 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id m65so8082182qte.11 for ; Fri, 20 Nov 2020 12:41:42 -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=zDHlJFShehBJ5q3rk0/vPtJFyYq9axb9YDkwUwvA/p8=; b=Im9sMlJHzrVisXRtybyKQOViK9qEOKvQ0UaMI5Sdh09HUh1ckliHFREY7xxjFYkvCo 2Kn+7IodRH1rPsMiKeTbuinuXqRwsaxpDoxMa7wEbqo6eF0nxNHRUFY0pUQsKUT1WllA HfE6bwjcIghIIavgmKL96nxTRVR1Cqb5BCgCW08nnv0LhaFcuTXIcggSmqBjlNdrwge+ ygGLr1nV29k9W8p50DwyQb9H4Xr7Ss6ou6cohObsSAN5ICNY7/KOURZHUDMfKTpGbfPj rauRncA9UMYrLleGCpF8/X165uv2Wi4OlzSAMvwutyKdfyUBzUFLXsxgrIeG1aunAylh 18Bg== 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=zDHlJFShehBJ5q3rk0/vPtJFyYq9axb9YDkwUwvA/p8=; b=e38fBGYz8MXRRWuiyvG/1CPmKg58gUX2vi9Zl/kPzGbtZuPl87Kp92yCYexzYjcX+A HFVpNDkkJjQLvBfE02+WXdJ7Fn9Ce75MpxdcLFODfZdTCKN6L+9xQdkPGgC3wyYnymPC 5pYAvQn50HuAq12oDyYE0OH+DY8pznjxhSTjNPZXpxljc6J0h7/DqPGn7qJe55c0840J KVqlhwIFcoHiB2rNkaT4mRBLAJSyhjnYA+zrCMt0PE8/Dbmf6Jrcp9b/fLPKChLLUsoY RtjE8HZ1c8Z7+O4174ORVSqkHuT5ah8bavCfArmBZQzablw+HFwUqo3X8dKwxob2yxVD HBvA== X-Gm-Message-State: AOAM531lyX1L01bx17P0vwfZv2jmOUqT6X3kxVrq1DbR+pP0GdoLHnuD PwccjySZrkxP6qvBrTELBUe4vsoqngU= X-Google-Smtp-Source: ABdhPJwxvk60SXr2YeiOjCgyMLHpikdhM/zgfhSgtoiAE76f7DXmJC1c4M8z0BNqTovnApWpB2LiYw== X-Received: by 2002:a05:622a:d4:: with SMTP id p20mr17845338qtw.172.1605904901444; Fri, 20 Nov 2020 12:41:41 -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 r89sm2770055qtd.16.2020.11.20.12.41.40 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:40 -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 0AKKfd7t029480 for ; Fri, 20 Nov 2020 20:41:39 GMT Subject: [PATCH v2 089/118] NFSD: Update the NFSv3 DIROPargs decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:39 -0500 Message-ID: <160590489973.1340.18263417706725689257.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index a74c309ad429..763bac27cfda 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -117,6 +117,40 @@ decode_filename(__be32 *p, char **namp, unsigned int *lenp) return p; } +static enum xdr_decode_result +svcxdr_decode_filename3(struct xdr_stream *xdr, char **name, unsigned int *len) +{ + u32 size, i; + __be32 *p; + char *c; + + if (xdr_stream_decode_u32(xdr, &size) < 0) + return XDR_DECODE_FAILED; + if (size == 0 || size > NFS3_MAXNAMLEN) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, size); + if (!p) + return XDR_DECODE_FAILED; + + *len = size; + *name = (char *)p; + for (i = 0, c = *name; i < size; i++, c++) { + if (*c == '\0' || *c == '/') + return XDR_DECODE_FAILED; + } + + return XDR_DECODE_DONE; +} + +static enum xdr_decode_result +svcxdr_decode_diropargs3(struct xdr_stream *xdr, struct svc_fh *fhp, + char **name, unsigned int *len) +{ + if (!svcxdr_decode_nfs_fh3(xdr, fhp)) + return XDR_DECODE_FAILED; + return svcxdr_decode_filename3(xdr, name, len); +} + static __be32 * decode_sattr3(__be32 *p, struct iattr *iap, struct user_namespace *userns) { @@ -357,13 +391,10 @@ nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_diropargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->fh)) - || !(p = decode_filename(p, &args->name, &args->len))) - return 0; - - return xdr_argsize_check(rqstp, p); + return svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len); } int From patchwork Fri Nov 20 20:41:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922491 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64FAEC2D0E4 for ; Fri, 20 Nov 2020 20:41:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0890622201 for ; Fri, 20 Nov 2020 20:41:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HEN6e80o" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731606AbgKTUls (ORCPT ); Fri, 20 Nov 2020 15:41:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730814AbgKTUls (ORCPT ); Fri, 20 Nov 2020 15:41:48 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C4555C0613CF for ; Fri, 20 Nov 2020 12:41:47 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id d9so10202312qke.8 for ; Fri, 20 Nov 2020 12:41:47 -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=xmNMNloWuQykysGcG8jFbNAa4qupzahWyr3djQKPmMg=; b=HEN6e80oG0V0aEyB2dvJxqpVfZrf+16I9Fq3f+CBrBzPPp+FEj92H1yNdy/zl6ZZ4a mVyHhBPp3Lccn2S0t3YqFI+d6N84MpTEw10OVDs2/U+TIn9s6P1ukneyudocfK8GjvJy gKEIBiuaciqZ4xSImNbKjMzepbU3B8WP6uo+GczNu9Cqgb+5iB0/ks55uqcbKGEEDKKC 7wpxfw3lbzev3B9DNBPVYpvXJpFrN1RHAl6M/VgQZa9TCwP9WjTi244QNlMcVPn9WYxe y0UXpUKES1OC650K1y87Aagsj/1yGrKiZ7xxml1HNijLywIkoS4p1jsrbkL2kY9s1UJa XUbg== 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=xmNMNloWuQykysGcG8jFbNAa4qupzahWyr3djQKPmMg=; b=g+M908tlXjfZCiGM5rlLEACrVZJjZ/5U61S5E06PyBKGTA6xp7785yDmIVQVPrt8dW zWMQ3VAvB+WoLdCuCDZDzjfShTaJQxIQpdvaFBDhraDt3vxVxciJFH5J9KY0ZcyCWcpt xd9KeWQMW/skH9nbCYixN9pL05UpgXmqbGKAXjd495hPe6nICaxmL9MJFYAdvifrclQU J6rej1sC5l/IFOfCjLCxP4/5L+UOoHs8zwi8vobIrP9pacapqRNjW/lAxF7fQcjQAjpm EIBY0UJRnv/RtEuUul0FALd/3VlLygNepCRDQWOOtPbCzkvC2ocqQdXEMe22PkRzkqiX ia1A== X-Gm-Message-State: AOAM532IrbAAiXDFSo056z8EvacJf9XR/EOl1wbSEsMcQnIapmvjbF7q HSWN+yRX3uJqfXEW3OwlGcixuuOHMSc= X-Google-Smtp-Source: ABdhPJyKHfVaCCt5ml6F3mrzvEGc8eDxJvsU/nMbUWnsFoqN1ABG1g68ubIasAnnERoL/jsT7ZBjNg== X-Received: by 2002:a37:e40b:: with SMTP id y11mr19117610qkf.29.1605904906790; Fri, 20 Nov 2020 12:41:46 -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 g9sm2723241qti.86.2020.11.20.12.41.45 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:46 -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 0AKKfj3T029483 for ; Fri, 20 Nov 2020 20:41:45 GMT Subject: [PATCH v2 090/118] NFSD: Update the RENAME3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:45 -0500 Message-ID: <160590490507.1340.11081683796515808744.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 763bac27cfda..f941bd740963 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -557,15 +557,12 @@ nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_renameargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->ffh)) - || !(p = decode_filename(p, &args->fname, &args->flen)) - || !(p = decode_fh(p, &args->tfh)) - || !(p = decode_filename(p, &args->tname, &args->tlen))) - return 0; - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_diropargs3(xdr, &args->ffh, &args->fname, &args->flen)) + return XDR_DECODE_FAILED; + return svcxdr_decode_diropargs3(xdr, &args->tfh, &args->tname, &args->tlen); } int From patchwork Fri Nov 20 20:41:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922493 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D08CCC2D0E4 for ; Fri, 20 Nov 2020 20:41:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 53C3322201 for ; Fri, 20 Nov 2020 20:41:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VPLQ+4ft" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731727AbgKTUlx (ORCPT ); Fri, 20 Nov 2020 15:41:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731546AbgKTUlx (ORCPT ); Fri, 20 Nov 2020 15:41:53 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 412EBC0613CF for ; Fri, 20 Nov 2020 12:41:53 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id k4so10179453qko.13 for ; Fri, 20 Nov 2020 12:41:53 -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=CbaJr2SMaskePy11W3StPjdkc0HqfHPdNYupIafXH7c=; b=VPLQ+4ftLhxl9rfRF0T0KwHODEoMUU/GiIyCQtkpawpkGdh+9lE5CQn+z4x0lML/d+ DNHdpezcwa8ta4PNuwZ5/qYxtf0FP3Z5Ze6wDiEaGWxfo2WYj4O3C4TFYFIJd2f3jANz fznHLeVmLibCqHTmRE6luiaSiDuheZ9wI62Un27npsLtrnGtrspLcXgobir726KfG84w ZQGR+J4hZRCEGCiFWqJljHpuKx/wYibiAZnk+TYImlR07PNbUjJiYtLuIYGlACfc27gF xr9lQFb4+wMPGowUBTNFvKUsN7UipZsGoqlp+bWOSayzPpjvvIduqNQz4ljer+Bk4H1C ZkHQ== 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=CbaJr2SMaskePy11W3StPjdkc0HqfHPdNYupIafXH7c=; b=hF3ARsp7ucpVBz39iHdOM/u+zgwkbEOdiBvR7DJMkyZmcOGfkpc5otGx1s4i2eY3ix WMQAoANiTlGH6ITeeji3fqI4GR2kxhI6cBbyV6f30yrTujM6P88gWGabqTPkDkNtKn/O mvQ8t2XT97JUAXfUUJsnJDpnyUq3+224Y8FVpNPIT3FakDToN4/h+iSlZLfAyzlC5O4E WuQfpBj7wnfD82e55Aq2nwizAY7m5mMpg0LUac01Ms8nsnTVl6qxkLexCBlo6eCK92Xk 5M1G5uxrd0+H7cSABqGT991H3dhAo2PWHZKP1TRnvGlpQlBKZUmhW/z/iO1d9NrhIlkD dmWA== X-Gm-Message-State: AOAM532B7bl2xI/pGSz/3Vk53rD8g3OOsBwhHmCjHF6vRIRZOywQthUy oDsMY/BpAK2c1dRm0d4H77GGZF+yPkA= X-Google-Smtp-Source: ABdhPJwopMFqeGSK8AzS6sNRFLrt9S5zoDlnDzx58Bdkk0hPHFru63J0i+6bxJuK/A0ZmofpvC7Bwg== X-Received: by 2002:a05:620a:1286:: with SMTP id w6mr18348607qki.341.1605904912173; Fri, 20 Nov 2020 12:41:52 -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 z186sm2760321qke.100.2020.11.20.12.41.51 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:51 -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 0AKKfoSk029486 for ; Fri, 20 Nov 2020 20:41:50 GMT Subject: [PATCH v2 091/118] NFSD: Update the LINK3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:50 -0500 Message-ID: <160590491043.1340.6516292939826969615.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index f941bd740963..b27c04c642b7 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -568,14 +568,12 @@ nfs3svc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_linkargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->ffh)) - || !(p = decode_fh(p, &args->tfh)) - || !(p = decode_filename(p, &args->tname, &args->tlen))) - return 0; - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_nfs_fh3(xdr, &args->ffh)) + return XDR_DECODE_FAILED; + return svcxdr_decode_diropargs3(xdr, &args->tfh, &args->tname, &args->tlen); } int From patchwork Fri Nov 20 20:41:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922495 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36BB2C2D0E4 for ; Fri, 20 Nov 2020 20:42:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C063022201 for ; Fri, 20 Nov 2020 20:41:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D6edd4mQ" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731729AbgKTUl7 (ORCPT ); Fri, 20 Nov 2020 15:41:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731546AbgKTUl7 (ORCPT ); Fri, 20 Nov 2020 15:41:59 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97D9CC0613CF for ; Fri, 20 Nov 2020 12:41:58 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id i12so8147734qtj.0 for ; Fri, 20 Nov 2020 12:41:58 -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=gGiw+UR6Z/5VTbMbviEGWFSrf8RziiC1VvarOhwsGD0=; b=D6edd4mQjo3dX6Wsm1lCobCwid3gN6L6/RG6rS8Rk2VfmjrAiXl3QF/PCK3/OrQfxZ ZwpueeJDw8Hme8Ac85HvgH6xL/vPmuVK412+7fC1wjGhALsM0IWRJoM4WpX88V1SrN/r lTZCzxCSSLuDqI+9g+CbavjyUJBBAZzl0iOazvc6mpMnchb0fzQm0hHkq+lX+PnsMdMW VzpeMtYWNCT1GE3QZjcf+rKNpqyLt00q9aHEKUaR8auAE6wsRg/+q245eClF6gJ/MOdw woMDn15AsgBBtbKTQyiluSipd0xCosGNDW7HYZSnPtdFZ4n0mZho73M/P2i+sZY39CoY l04Q== 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=gGiw+UR6Z/5VTbMbviEGWFSrf8RziiC1VvarOhwsGD0=; b=ma2N8Ewq374fWfY5K9IPYLdrRAmTcXSDBRy6S5ywevjCkVsbBZQsXJ2bwp1f2MwzOc 5KkymL1j7AI3WOyL7h8BpCSdgxRiNdJ1wJU6kwzZ/w7khl52pS+OfNKa9qT9fWWz2Zme TMrM3PSZ+F+GdtKP8lPuNCRxJmejKF0yBLDNG8EfJcj6JexSFhAaaYYCZKYFuIflXZy4 6QyZPSP7xMBhkfa4QE2Ewj4BeR7yPs4me+dxnbBUCNCdOYKz4WuAiaw31npkOS09dtLk I+djtnOfhMSA4Eb9R8ngLfD3yTMqlzIKo5EETL0RF7C4znqycNflhCxqsfgeHmhqQ4Im CBJw== X-Gm-Message-State: AOAM5334CbIwxVXgIyawqTPhcLBWKuSN6wjf1TFsWCpyTJlBZPGD5BwL c77n3jGGskAWJbrg/dZsoQblKaaq8q4= X-Google-Smtp-Source: ABdhPJx0UeV0pwogLOOPNq3eXxU1s0jwJLAeKcM4n98Y/M2qHQPk81Z5GIhfYry7Jv7h6w2kuvZ0Pw== X-Received: by 2002:ac8:7a7b:: with SMTP id w27mr17455961qtt.76.1605904917481; Fri, 20 Nov 2020 12:41:57 -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 i9sm2692316qtp.72.2020.11.20.12.41.56 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:41:56 -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 0AKKftO0029489 for ; Fri, 20 Nov 2020 20:41:55 GMT Subject: [PATCH v2 092/118] NFSD: Update the SETATTR3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:41:55 -0500 Message-ID: <160590491578.1340.12778361933126858693.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 150 ++++++++++++++++++++++++++++++++++++++++----- include/uapi/linux/nfs3.h | 6 ++ 2 files changed, 139 insertions(+), 17 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index b27c04c642b7..5c46ab972a23 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -39,12 +39,18 @@ encode_time3(__be32 *p, struct timespec64 *time) return p; } -static __be32 * -decode_time3(__be32 *p, struct timespec64 *time) +static enum xdr_decode_result +svcxdr_decode_nfstime3(struct xdr_stream *xdr, struct timespec64 *timep) { - time->tv_sec = ntohl(*p++); - time->tv_nsec = ntohl(*p++); - return p; + __be32 *p; + + p = xdr_inline_decode(xdr, sizeof(__be32) * 2); + if (!p) + return XDR_DECODE_FAILED; + timep->tv_sec = be32_to_cpup(p++); + timep->tv_nsec = be32_to_cpup(p); + + return XDR_DECODE_DONE; } static enum xdr_decode_result @@ -151,6 +157,122 @@ svcxdr_decode_diropargs3(struct xdr_stream *xdr, struct svc_fh *fhp, return svcxdr_decode_filename3(xdr, name, len); } +static enum xdr_decode_result +svcxdr_decode_sattr3(struct svc_rqst *rqstp, struct xdr_stream *xdr, + struct iattr *iap) +{ + u32 set_it; + __be32 *p; + + iap->ia_valid = 0; + + p = xdr_inline_decode(xdr, sizeof(__be32)); + if (!p) + return XDR_DECODE_FAILED; + if (xdr_item_is_present(p)) { + u32 mode; + + if (xdr_stream_decode_u32(xdr, &mode) < 0) + return XDR_DECODE_FAILED; + iap->ia_valid |= ATTR_MODE; + iap->ia_mode = mode; + } + + p = xdr_inline_decode(xdr, sizeof(__be32)); + if (!p) + return XDR_DECODE_FAILED; + if (xdr_item_is_present(p)) { + u32 uid; + + if (xdr_stream_decode_u32(xdr, &uid) < 0) + return XDR_DECODE_FAILED; + iap->ia_uid = make_kuid(nfsd_user_namespace(rqstp), uid); + if (uid_valid(iap->ia_uid)) + iap->ia_valid |= ATTR_UID; + } + + p = xdr_inline_decode(xdr, sizeof(__be32)); + if (!p) + return XDR_DECODE_FAILED; + if (xdr_item_is_present(p)) { + u32 gid; + + if (xdr_stream_decode_u32(xdr, &gid) < 0) + return XDR_DECODE_FAILED; + iap->ia_gid = make_kgid(nfsd_user_namespace(rqstp), gid); + if (gid_valid(iap->ia_gid)) + iap->ia_valid |= ATTR_GID; + } + + p = xdr_inline_decode(xdr, sizeof(__be32)); + if (!p) + return XDR_DECODE_FAILED; + if (xdr_item_is_present(p)) { + u64 newsize; + + if (xdr_stream_decode_u64(xdr, &newsize) < 0) + return XDR_DECODE_FAILED; + iap->ia_valid |= ATTR_SIZE; + iap->ia_size = min_t(u64, newsize, NFS_OFFSET_MAX); + } + + if (xdr_stream_decode_u32(xdr, &set_it) < 0) + return XDR_DECODE_FAILED; + switch (set_it) { + case DONT_CHANGE: + break; + case SET_TO_SERVER_TIME: + iap->ia_valid |= ATTR_ATIME; + break; + case SET_TO_CLIENT_TIME: + if (!svcxdr_decode_nfstime3(xdr, &iap->ia_atime)) + return XDR_DECODE_FAILED; + iap->ia_valid |= ATTR_ATIME | ATTR_ATIME_SET; + break; + default: + return XDR_DECODE_FAILED; + } + + if (xdr_stream_decode_u32(xdr, &set_it) < 0) + return XDR_DECODE_FAILED; + switch (set_it) { + case DONT_CHANGE: + break; + case SET_TO_SERVER_TIME: + iap->ia_valid |= ATTR_MTIME; + break; + case SET_TO_CLIENT_TIME: + if (!svcxdr_decode_nfstime3(xdr, &iap->ia_mtime)) + return XDR_DECODE_FAILED; + iap->ia_valid |= ATTR_MTIME | ATTR_MTIME_SET; + break; + default: + return XDR_DECODE_FAILED; + } + + return XDR_DECODE_DONE; +} + +static enum xdr_decode_result +svcxdr_decode_sattrguard3(struct xdr_stream *xdr, struct nfsd3_sattrargs *args) +{ + __be32 *p; + + p = xdr_inline_decode(xdr, sizeof(__be32)); + if (!p) + return XDR_DECODE_FAILED; + if (xdr_item_is_present(p)) { + p = xdr_inline_decode(xdr, sizeof(__be32) * 2); + if (!p) + return XDR_DECODE_FAILED; + args->check_guard = 1; + args->guardtime = be32_to_cpup(p); + } else + args->check_guard = 0; + + return XDR_DECODE_DONE; +} + static __be32 * decode_sattr3(__be32 *p, struct iattr *iap, struct user_namespace *userns) { @@ -372,20 +494,14 @@ nfs3svc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_sattrargs *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - p = decode_sattr3(p, &args->attrs, nfsd_user_namespace(rqstp)); - - if ((args->check_guard = ntohl(*p++)) != 0) { - struct timespec64 time; - p = decode_time3(p, &time); - args->guardtime = time.tv_sec; - } - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + if (!svcxdr_decode_sattr3(rqstp, xdr, &args->attrs)) + return XDR_DECODE_FAILED; + return svcxdr_decode_sattrguard3(xdr, args); } int diff --git a/include/uapi/linux/nfs3.h b/include/uapi/linux/nfs3.h index 37e4b34e6b43..c22ab77713bd 100644 --- a/include/uapi/linux/nfs3.h +++ b/include/uapi/linux/nfs3.h @@ -63,6 +63,12 @@ enum nfs3_ftype { NF3BAD = 8 }; +enum nfs3_time_how { + DONT_CHANGE = 0, + SET_TO_SERVER_TIME = 1, + SET_TO_CLIENT_TIME = 2, +}; + struct nfs3_fh { unsigned short size; unsigned char data[NFS3_FHSIZE]; From patchwork Fri Nov 20 20:42:01 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922497 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3CD82C56202 for ; Fri, 20 Nov 2020 20:42:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CEB3522201 for ; Fri, 20 Nov 2020 20:42:04 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ChQvBI+t" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731731AbgKTUmE (ORCPT ); Fri, 20 Nov 2020 15:42:04 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33840 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731546AbgKTUmE (ORCPT ); Fri, 20 Nov 2020 15:42:04 -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 D3F85C0613CF for ; Fri, 20 Nov 2020 12:42:03 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id r7so10230012qkf.3 for ; Fri, 20 Nov 2020 12:42:03 -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=EK1EF1WypRQJEN/mZfcN9BJ3mwAQGyQt3Hcg09sao24=; b=ChQvBI+tCS30VW8F1BKg8DpBfAWQQuM1i02erYn8h6Td4CQJTp/15q+2R6D4TP68z3 E3eLzErUdR3BHKp8lwXcuqae5nz4DUid5t/9AyLh9OHMjCn/a/Cp2JYQVcbT3PLtMIZN hb9zyed5KKPy1o+iRPTYyluuEIm7NIXocF+qJVjWaQbZtXTaVKZvwvRyxKS2xE362qyw as9372WSobf5M4Bgh6KN1IF0nwBw1vWCQRHjM17S9VS4yZQm0N+z5VVWM83eNZafDxIR 2a5oc+hSCsLzLfn0UfUCcSwP8LR28YxJKCE446Pveq0T3MFa1JKRv5Of5y50viF71oWN VuEQ== 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=EK1EF1WypRQJEN/mZfcN9BJ3mwAQGyQt3Hcg09sao24=; b=ccAMVypTw+yw+HtVPFpFGw2FKKMwRJ9uoe6vIxlT72MwIr0KYOU9jKJPgdxw7F8yjc Amq7isbYlm06kRPh0w4XkqZ14oFgIUvVZ1iQXve2Zq1iqcuMM0RUnm0Dpgnquxmwj0Hf 1h1//z/tQzkEN60Nwv3NQ4JRtlbAStcN0Us/ry7MDfTOdqMvla3Q4zlikBpRHd9lkTsR FT76lt/l5TjXM0Cz3ZRG0YmdizxXV9sBR19qBZ2O/e93r+hrewO5n4itP3WuQ1HuslFn /ZOj8sIGMS/FrNAXoQUEDXbBNtNBIEqwpZwVO7BwYw4E0ea81Hvmnl23EGOX6IorCx+D MnCg== X-Gm-Message-State: AOAM530QUfSIFnmf72bVbpT96fy5yzXLDSTYpiAevNkthJNo1fha07i5 E0joexex8imMBR0Ugq87doiU7O7XGf4= X-Google-Smtp-Source: ABdhPJy9Ss0Z3JvAKMaQgu1UNq5BASKuCZ1tDbdlgzKFaT/4UIoG+tQzElsdPe3l+qUtLbDODybTqQ== X-Received: by 2002:a05:620a:228a:: with SMTP id o10mr17938812qkh.111.1605904922824; Fri, 20 Nov 2020 12:42:02 -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 l91sm2782127qte.28.2020.11.20.12.42.01 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:02 -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 0AKKg1al029492 for ; Fri, 20 Nov 2020 20:42:01 GMT Subject: [PATCH v2 093/118] NFSD: Update the CREATE3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:01 -0500 Message-ID: <160590492114.1340.10030051796236992956.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 5c46ab972a23..ba1b24f54443 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -587,26 +587,26 @@ nfs3svc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_createargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->fh)) - || !(p = decode_filename(p, &args->name, &args->len))) - return 0; - - switch (args->createmode = ntohl(*p++)) { + if (!svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->createmode) < 0) + return XDR_DECODE_FAILED; + switch (args->createmode) { case NFS3_CREATE_UNCHECKED: case NFS3_CREATE_GUARDED: - p = decode_sattr3(p, &args->attrs, nfsd_user_namespace(rqstp)); - break; + return svcxdr_decode_sattr3(rqstp, xdr, &args->attrs); case NFS3_CREATE_EXCLUSIVE: - args->verf = p; - p += 2; + args->verf = xdr_inline_decode(xdr, NFS3_CREATEVERFSIZE); + if (!args->verf) + return XDR_DECODE_FAILED; break; default: - return 0; + return XDR_DECODE_FAILED; } - - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int From patchwork Fri Nov 20 20:42:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922499 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD53BC56202 for ; Fri, 20 Nov 2020 20:42:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7990722201 for ; Fri, 20 Nov 2020 20:42:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="F8tTWrrX" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731602AbgKTUmL (ORCPT ); Fri, 20 Nov 2020 15:42:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731598AbgKTUmK (ORCPT ); Fri, 20 Nov 2020 15:42:10 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35CF0C0613CF for ; Fri, 20 Nov 2020 12:42:09 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id m65so8083216qte.11 for ; Fri, 20 Nov 2020 12:42:09 -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=G2VLslRQXVCDK/dyCPR0uUfeg0ShKfOg8H+6cjVC1s8=; b=F8tTWrrX3INWxmq0eFaCaon/rqLh9q+5lCmz8BPfKGFwwLGBiVvFymJKNl/UJ/kzVN Fx7hFWSg+nQy77fcm2CJ/60UoMFSA+7RkZjoKcyefXQoIXIOgosGkBT/jORVcb5pmsnv iWNdQ8Qf/yZ8chl0NF1PWVOd1HRbtNuPOFR8RTkMdydFXfxqsHz6g1SJV3+S0FssBxKm XbarjQF2zn8K3e8Hk5gyoWNj+cUKWPrjmtLpH+AWizwsE1E5EQEPJR4Wh3V73nw8PWH7 hv1pOs/eH2tw0ZGrvNcopahgOuOHmQrNvw1GS/Rc5bTqh3at3yzDku9QeUXBFruk5m9U MC0g== 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=G2VLslRQXVCDK/dyCPR0uUfeg0ShKfOg8H+6cjVC1s8=; b=Uaucn9qIXl/LZtt73ANQ9OO3TpjviAy9k/lClm8NxwEOIobMMKkmk7lxjn7rxcomii LqRnsqRlI/HrjQ2Q/34R1NXX2Wrb5vakvmkujB6CczaEkUJY9Zijm2QOgPP+ISnKycqf KY4wPgP4Vq+XlMgqfF6niuXnBqMzPNl0EzT+VIrk39c98/iLdy7LpJKlAn6s6iNMQT47 cJX1QeEHMEDrl5KzNZw7ApPs77BTUcF/kAEi4PJJpKNNbfHGH6M1it8ESKKafQ6ros5t NBAF7c+O21Dv9rwE/EtMCtcTzajrINt6iwJTJl9HPbwGZOQx5n4Nj73hj35CsyG21ovR w/Kg== X-Gm-Message-State: AOAM530p9ZhZiPkDJbjFrx08foPX00APSKiWbcz+7+CPe9vA4zEGANVM BYPv4YIyuS87fNAYX+prpVKNXwFe92Y= X-Google-Smtp-Source: ABdhPJx9wWSEChBh07Z4m8gcljm1e1g8s6hq0pVQMDqmDitk902tjJcAXofpQfMp15STm+1GcxBP6Q== X-Received: by 2002:ac8:4612:: with SMTP id p18mr3749061qtn.31.1605904928160; Fri, 20 Nov 2020 12:42:08 -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 y17sm2731856qki.134.2020.11.20.12.42.07 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:07 -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 0AKKg6VZ029495 for ; Fri, 20 Nov 2020 20:42:06 GMT Subject: [PATCH v2 094/118] NFSD: Update the MKDIR3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:06 -0500 Message-ID: <160590492647.1340.17848953532890465659.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index ba1b24f54443..ec4778f01472 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -612,14 +612,12 @@ nfs3svc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_createargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->fh)) || - !(p = decode_filename(p, &args->name, &args->len))) - return 0; - p = decode_sattr3(p, &args->attrs, nfsd_user_namespace(rqstp)); - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len)) + return XDR_DECODE_FAILED; + return svcxdr_decode_sattr3(rqstp, xdr, &args->attrs); } int From patchwork Fri Nov 20 20:42:11 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922501 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EA301C56202 for ; Fri, 20 Nov 2020 20:42:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 89F8722201 for ; Fri, 20 Nov 2020 20:42:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lM7hHDen" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731663AbgKTUmP (ORCPT ); Fri, 20 Nov 2020 15:42:15 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731598AbgKTUmO (ORCPT ); Fri, 20 Nov 2020 15:42:14 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 96FD4C0613CF for ; Fri, 20 Nov 2020 12:42:14 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id l7so1824197qtp.8 for ; Fri, 20 Nov 2020 12:42:14 -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=tZ+wipNDwH32XP1tBhWQQdTHr47QmmncnySepXnvRX0=; b=lM7hHDenGIAa31gjsZQhG3JhSXbxm6PeLgRTmERCHQk9eKS5UtlYvQVct/l+dwSEr2 kgH3H59xNhoF3ezUXzGX0QCz/mOLf7Kvtvayz7TA+g9Xr+pm64drIdN8p5uWhGBPYxSR ViAICeG4NV/ian3ergXVdM0sWlaGu0areNRqsbJeALYtrz68OnBCFbM+9eY6qFH/y+qF ghV5wRN6Z3Z3SHw8oG+DyAZ5Q9Xh5xJ8dSR/6Ul7Mwa0efFLQQBqCWRWffliLbYPFBkt h3fdhie/G8ANLgXhIfCcLh1+9OlrUy461y1e9M+CtZ0MINwGZHc0fhAy/IrtiDPb3Cnu 5G5w== 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=tZ+wipNDwH32XP1tBhWQQdTHr47QmmncnySepXnvRX0=; b=sCeqDtClZ3T5Jp9bFIPcp9yNstjSQ2vOwLcaYp8cp034fWWiz3hr+jhcsNbfXOIHe5 UoHAp307vRkGWD6ERNSnlPCJCSeQYR3Mko0kcrtJGcWH+ZwI114H7dSXnOvvRPhzRBbu NU6sD4CEABAc4MZI8aB1jw7WvlZdJ1zj5+0zJE0p65x+zpv53pH+xC0keH3akLp1y3W4 eE+7cNG8lt7QiQ5am89FBKW5w7SAKBLE+4Vb/9rQXh8Tt2py1pLTXZEmvEJT3jjNUzoo Rjep1HBYZQiEHqvEvFtf5n5JpbA+UqJzBu/mr45679nFbn9h8DqhQCwI+drmIxq/9fhx UnBw== X-Gm-Message-State: AOAM531q9xCJIHKYS2ke/8/EUc5iijg5FQXtrDqPjUEo4xhzkRUNj416 olQQbJ0V/lOb0EN6kASU57nf0JN+ShU= X-Google-Smtp-Source: ABdhPJxG4eLNNbhBXTGUKi5dayzaw40oHzKKtx5dguOnMxryTAPjIcYMrz7wSPrTPoBC4JpIHGRxJQ== X-Received: by 2002:aed:3668:: with SMTP id e95mr1588899qtb.69.1605904933510; Fri, 20 Nov 2020 12:42:13 -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 b197sm2853877qkg.65.2020.11.20.12.42.12 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:12 -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 0AKKgBZs029498 for ; Fri, 20 Nov 2020 20:42:11 GMT Subject: [PATCH v2 095/118] NFSD: Update the SYMLINK3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:11 -0500 Message-ID: <160590493180.1340.14177384748797931925.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Similar to the WRITE decoder, code that checks the sanity of the payload size is re-wired to work with xdr_stream infrastructure. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index ec4778f01472..6dfab4bd6c2c 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -623,26 +623,29 @@ nfs3svc_decode_mkdirargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_symlinkargs *args = rqstp->rq_argp; - char *base = (char *)p; - size_t dlen; + struct kvec *head = rqstp->rq_arg.head; + struct kvec *tail = rqstp->rq_arg.tail; + size_t remaining; - if (!(p = decode_fh(p, &args->ffh)) || - !(p = decode_filename(p, &args->fname, &args->flen))) - return 0; - p = decode_sattr3(p, &args->attrs, nfsd_user_namespace(rqstp)); + if (!svcxdr_decode_diropargs3(xdr, &args->ffh, &args->fname, &args->flen)) + return XDR_DECODE_FAILED; + if (!svcxdr_decode_sattr3(rqstp, xdr, &args->attrs)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->tlen) < 0) + return XDR_DECODE_FAILED; - args->tlen = ntohl(*p++); + /* request sanity */ + remaining = head->iov_len + rqstp->rq_arg.page_len + tail->iov_len; + remaining -= xdr_stream_pos(xdr); + if (remaining < xdr_align_size(args->tlen)) + return XDR_DECODE_FAILED; - args->first.iov_base = p; - args->first.iov_len = rqstp->rq_arg.head[0].iov_len; - args->first.iov_len -= (char *)p - base; + args->first.iov_base = xdr->p; + args->first.iov_len = head->iov_len - xdr_stream_pos(xdr); - dlen = args->first.iov_len + rqstp->rq_arg.page_len + - rqstp->rq_arg.tail[0].iov_len; - if (dlen < XDR_QUADLEN(args->tlen) << 2) - return 0; - return 1; + return XDR_DECODE_DONE; } int From patchwork Fri Nov 20 20:42:17 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922503 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 708A9C2D0E4 for ; Fri, 20 Nov 2020 20:42:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0AB8F22201 for ; Fri, 20 Nov 2020 20:42:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="r28Cnwy1" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731672AbgKTUmV (ORCPT ); Fri, 20 Nov 2020 15:42:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731598AbgKTUmV (ORCPT ); Fri, 20 Nov 2020 15:42:21 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2096DC0613CF for ; Fri, 20 Nov 2020 12:42:20 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id u4so10197783qkk.10 for ; Fri, 20 Nov 2020 12:42:20 -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=PEcrhSATQpFl3fXEVUtsV51ONe71tAfVltBDG9jXBjA=; b=r28Cnwy18ifPf7hPhUGRwIyfnFCMrUq0q1HCuJOZiiF01nFA9ghuzpibmRkEig7xFl E+J8OMSe+24ShPlFI1NXDnp0+B/Yxfp1JiFla+kZBz/Uv+GRIfAh0+iuWPRqDkbOLVis gzaw3NVu5YxTORoyvDYI6ICIjxlGb82r6gOWPEwfzwVxENfAolpJHX0C71zNTT94OgrG n2ouU44Dsc1xt+m59YB2fhUhwgBVp0bxGX/5u5V3h5UCikAKoNVtSdemNdpAL3NSH6tX y82BSiKBAnD5E2m3t3g1nGG0srmnaOibiItYz9Syvh5f5qwd7h/95ujJ262PkkEY611y gQrA== 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=PEcrhSATQpFl3fXEVUtsV51ONe71tAfVltBDG9jXBjA=; b=UO0CqrR9ZSCr1OA0G1xSQ7kuzz69oji+hyHdW5HEFtK0UdOB8URv6V+SVYs8nj4/hV K+h0+Xi/GcpoY1OS0Ap85V0HW1DUdvj5YhEJFExbwOqO95btSfULRcTi0GKe7iRDOW5g lg4QcVC/NHjk7AG5U3vBrn4uGmQXTogj+tbclKTDkzIBuErYKMOPFI+avX5soSEv+XQQ LWGkVouAoY1yop7SjM2ov+muI03R9Ad7MEXUUXhPrmGgbiqPJAGfN5CqXH10n8eUQSYL vBFEuOkof2F626TzX8S34X16+meDXChAnWXk+zUzj1sVpxMLIeSFgAPgzwafYiu+Jcos yP5w== X-Gm-Message-State: AOAM533hAN+BCa+OY0fKJVCOZUMC8BKhhkwJ0k6X9CyKunTdKkMdTx+U IfqXEPCy2qRfOv2qnHu64bcCcyWh6is= X-Google-Smtp-Source: ABdhPJzImaXFWp+dGDf+5uG5UBX7xnzqYiybGyKTPB8wriOg2H6zaR7uUMBqFT2Lq4SW5jQjnZi7Pw== X-Received: by 2002:a37:9ac4:: with SMTP id c187mr13839542qke.159.1605904938942; Fri, 20 Nov 2020 12:42:18 -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 p72sm2897220qke.110.2020.11.20.12.42.18 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:18 -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 0AKKgHdt029501 for ; Fri, 20 Nov 2020 20:42:17 GMT Subject: [PATCH v2 096/118] NFSD: Update the MKNOD3args decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:17 -0500 Message-ID: <160590493716.1340.15655083491324688448.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org This commit removes the last usage of the original decode_sattr3(), so it is removed as a clean-up. Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 110 ++++++++++++++++++----------------------------------- 1 file changed, 37 insertions(+), 73 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 6dfab4bd6c2c..df593dd9924b 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -103,26 +103,6 @@ encode_fh(__be32 *p, struct svc_fh *fhp) return p + XDR_QUADLEN(size); } -/* - * Decode a file name and make sure that the path contains - * no slashes or null bytes. - */ -static __be32 * -decode_filename(__be32 *p, char **namp, unsigned int *lenp) -{ - char *name; - unsigned int i; - - if ((p = xdr_decode_string_inplace(p, namp, lenp, NFS3_MAXNAMLEN)) != NULL) { - for (i = 0, name = *namp; i < *lenp; i++, name++) { - if (*name == '\0' || *name == '/') - return NULL; - } - } - - return p; -} - static enum xdr_decode_result svcxdr_decode_filename3(struct xdr_stream *xdr, char **name, unsigned int *len) { @@ -273,49 +253,27 @@ svcxdr_decode_sattrguard3(struct xdr_stream *xdr, struct nfsd3_sattrargs *args) return XDR_DECODE_DONE; } -static __be32 * -decode_sattr3(__be32 *p, struct iattr *iap, struct user_namespace *userns) +static enum xdr_decode_result +svcxdr_decode_specdata3(struct xdr_stream *xdr, struct nfsd3_mknodargs *args) { - u32 tmp; + __be32 *p; - iap->ia_valid = 0; + p = xdr_inline_decode(xdr, sizeof(__be32) * 2); + if (!p) + return XDR_DECODE_FAILED; + args->major = be32_to_cpup(p++); + args->minor = be32_to_cpup(p); - if (*p++) { - iap->ia_valid |= ATTR_MODE; - iap->ia_mode = ntohl(*p++); - } - if (*p++) { - iap->ia_uid = make_kuid(userns, ntohl(*p++)); - if (uid_valid(iap->ia_uid)) - iap->ia_valid |= ATTR_UID; - } - if (*p++) { - iap->ia_gid = make_kgid(userns, ntohl(*p++)); - if (gid_valid(iap->ia_gid)) - iap->ia_valid |= ATTR_GID; - } - if (*p++) { - u64 newsize; + return XDR_DECODE_DONE; +} - iap->ia_valid |= ATTR_SIZE; - p = xdr_decode_hyper(p, &newsize); - iap->ia_size = min_t(u64, newsize, NFS_OFFSET_MAX); - } - if ((tmp = ntohl(*p++)) == 1) { /* set to server time */ - iap->ia_valid |= ATTR_ATIME; - } else if (tmp == 2) { /* set to client time */ - iap->ia_valid |= ATTR_ATIME | ATTR_ATIME_SET; - iap->ia_atime.tv_sec = ntohl(*p++); - iap->ia_atime.tv_nsec = ntohl(*p++); - } - if ((tmp = ntohl(*p++)) == 1) { /* set to server time */ - iap->ia_valid |= ATTR_MTIME; - } else if (tmp == 2) { /* set to client time */ - iap->ia_valid |= ATTR_MTIME | ATTR_MTIME_SET; - iap->ia_mtime.tv_sec = ntohl(*p++); - iap->ia_mtime.tv_nsec = ntohl(*p++); - } - return p; +static enum xdr_decode_result +svcxdr_decode_devicedata3(struct svc_rqst *rqstp, struct xdr_stream *xdr, + struct nfsd3_mknodargs *args) +{ + if (!svcxdr_decode_sattr3(rqstp, xdr, &args->attrs)) + return XDR_DECODE_FAILED; + return svcxdr_decode_specdata3(xdr, args); } static __be32 *encode_fsid(__be32 *p, struct svc_fh *fhp) @@ -651,24 +609,30 @@ nfs3svc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) int nfs3svc_decode_mknodargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_mknodargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->fh)) - || !(p = decode_filename(p, &args->name, &args->len))) - return 0; - - args->ftype = ntohl(*p++); - - if (args->ftype == NF3BLK || args->ftype == NF3CHR - || args->ftype == NF3SOCK || args->ftype == NF3FIFO) - p = decode_sattr3(p, &args->attrs, nfsd_user_namespace(rqstp)); - - if (args->ftype == NF3BLK || args->ftype == NF3CHR) { - args->major = ntohl(*p++); - args->minor = ntohl(*p++); + if (!svcxdr_decode_diropargs3(xdr, &args->fh, &args->name, &args->len)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->ftype) < 0) + return XDR_DECODE_FAILED; + switch (args->ftype) { + case NF3CHR: + case NF3BLK: + return svcxdr_decode_devicedata3(rqstp, xdr, args); + case NF3SOCK: + case NF3FIFO: + return svcxdr_decode_sattr3(rqstp, xdr, &args->attrs); + case NF3REG: + case NF3DIR: + case NF3LNK: + /* Valid XDR but illegal file types */ + break; + default: + return XDR_DECODE_FAILED; } - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int From patchwork Fri Nov 20 20:42:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922505 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B33F9C56202 for ; Fri, 20 Nov 2020 20:42:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5A22622201 for ; Fri, 20 Nov 2020 20:42:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FUb45V6x" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731686AbgKTUmZ (ORCPT ); Fri, 20 Nov 2020 15:42:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33902 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731598AbgKTUmZ (ORCPT ); Fri, 20 Nov 2020 15:42:25 -0500 Received: from mail-qt1-x832.google.com (mail-qt1-x832.google.com [IPv6:2607:f8b0:4864:20::832]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 49A72C0613CF for ; Fri, 20 Nov 2020 12:42:25 -0800 (PST) Received: by mail-qt1-x832.google.com with SMTP id i12so8148686qtj.0 for ; Fri, 20 Nov 2020 12:42:25 -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=bEZxlptV0LvDBiCsQ8pcnlXx7WPUts0bE6odT0CmY90=; b=FUb45V6xxM+O9ZayV2WbsDsw/UrD93T2o2Vla/mKfmqSghUr5mlzTc4W6XgTps50bd KapTbuCYH2s5sl/0d4KHeiv6K1yZBnX5IRmyffrtza6XpzOfyRiW2XdfNip/3JDQ7DmZ KGtRH0CxeGnOnWXNAB0bLvUlV0I9Dy52CmgnwNvapMU2u238WzfhP5y9fYN3HqyslJ4/ 9onBqhlnZCtX23EKDMvQxzfpR8nJ1CiWJdZcU/xmoODDik7W+yMboWYMAeCbPDDuOBpN RjWmuGpzWNUz/Ts0EoA5QQbTkUYlnNlZqmVSvAcMEClZHBcimmydLW3k3PWi+K2P/mD8 sItg== 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=bEZxlptV0LvDBiCsQ8pcnlXx7WPUts0bE6odT0CmY90=; b=bkUiJGGqL5QQ1IiuAKHJ4ZMMMGwXpOYSd+qHqt93icafUA2CoVGH9jpDgHQhITEgk9 TvMo50C+uveIMV8WwGpGkjikEvwdNMlvBefmWyzTaTKxPlsO6qxPyRPYS8tXjQJZgpoh 7z8RMyuNKj9HIX3g3UZachPafYFb05dv1bgVJLfEKb++MByZHK47H/smmpD+MJym4hAg kVsfTQkdQN/CaYaYRm/8RlbWGHYjzVgJYKsGNQcMa0nC+lSAOIlETCgW+C1Ss40r2Gqi YwaAZbjyr0lqXUDkw+cwxfpwzjOdcieGHVnxL3L1e9elNGLIrloBKM556hPJh61ox4h9 7kvQ== X-Gm-Message-State: AOAM532szBP8HyJfpfJPXFdn7dEBF0mHC1hHgLqTImJI2t1+1ttKQVS0 Bg44SGA1XNJz4QZn0sc++K0bAcz6S2o= X-Google-Smtp-Source: ABdhPJz3o4qFAYY70dUCHozBqDTlX+EdXAPK2eg48oEBK+vnDTlg5/y39O16p8uF8yV7F2zicGkkBw== X-Received: by 2002:ac8:4252:: with SMTP id r18mr17666661qtm.26.1605904944188; Fri, 20 Nov 2020 12:42:24 -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 y192sm2980284qkb.12.2020.11.20.12.42.23 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:23 -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 0AKKgM50029504 for ; Fri, 20 Nov 2020 20:42:22 GMT Subject: [PATCH v2 097/118] NFSD: Update the NFSv2 GETATTR argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:22 -0500 Message-ID: <160590494253.1340.2204577527335801278.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsproc.c | 4 ++-- fs/nfsd/nfsxdr.c | 26 ++++++++++++++++++++------ fs/nfsd/xdr.h | 2 +- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 9473d048efec..5b8436af43a9 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -626,7 +626,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_GETATTR] = { .pc_func = nfsd_proc_getattr, - .pc_decode = nfssvc_decode_fhandle, + .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_attrstat, .pc_release = nfssvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_fhandle), @@ -776,7 +776,7 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_STATFS] = { .pc_func = nfsd_proc_statfs, - .pc_decode = nfssvc_decode_fhandle, + .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_statfsres, .pc_argsize = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_statfsres), diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 7aa6e8aca2c1..36765a96abae 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -23,8 +23,9 @@ static u32 nfs_ftypes[] = { /* - * XDR functions for basic NFS types + * Basic NFSv2 data types (RFC 1094 Section 2.3) */ + static __be32 * decode_fh(__be32 *p, struct svc_fh *fhp) { @@ -37,6 +38,21 @@ decode_fh(__be32 *p, struct svc_fh *fhp) return p + (NFS_FHSIZE >> 2); } +static enum xdr_decode_result +svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp) +{ + __be32 *p; + + p = xdr_inline_decode(xdr, NFS_FHSIZE); + if (!p) + return XDR_DECODE_FAILED; + fh_init(fhp, NFS_FHSIZE); + memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); + fhp->fh_handle.fh_size = NFS_FHSIZE; + + return XDR_DECODE_DONE; +} + /* Helper function for NFSv2 ACL code */ __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp) { @@ -194,14 +210,12 @@ __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *f */ int -nfssvc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p) +nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_fhandle *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - return xdr_argsize_check(rqstp, p); + return svcxdr_decode_fhandle(xdr, &args->fh); } int diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index ad77387734cc..84256a6a1ba1 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -144,7 +144,7 @@ union nfsd_xdrstore { #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore) -int nfssvc_decode_fhandle(struct svc_rqst *, __be32 *); +int nfssvc_decode_fhandleargs(struct svc_rqst *, __be32 *); int nfssvc_decode_sattrargs(struct svc_rqst *, __be32 *); int nfssvc_decode_diropargs(struct svc_rqst *, __be32 *); int nfssvc_decode_readargs(struct svc_rqst *, __be32 *); From patchwork Fri Nov 20 20:42:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922507 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 874C7C2D0E4 for ; Fri, 20 Nov 2020 20:42:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2E8CA22201 for ; Fri, 20 Nov 2020 20:42:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZRB6M9lG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731687AbgKTUmb (ORCPT ); Fri, 20 Nov 2020 15:42:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33920 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731685AbgKTUma (ORCPT ); Fri, 20 Nov 2020 15:42:30 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0AE2C0613CF for ; Fri, 20 Nov 2020 12:42:30 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id 199so10191739qkg.9 for ; Fri, 20 Nov 2020 12:42:30 -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=2n47fKiM2da24ENTeYnLfiEuqJfAHR6goaY+lknednU=; b=ZRB6M9lGgLiurn6qktZAXP6fkzHVJynrhDvA+bs6AayCRLtsD3rekD7we2lBzoxOS3 5kOUDloIw8aVtMjh/vAjyApqwG/nAzg03a9ZrEq4ZXU49RvHHnAVPGYkNiW60XVBASH/ 7DNU00KkM4WaTud5kNdF7H3ItkO73yJI0kQL5xtSfTn+/jn9gmiqEKOxEf5MG1Z+TD5N 1PpBCg/FqEhOwrg89sluR2H7Y1HiolrAkkyYqZbXZvKTAUANRDuxHaKNlUPX4Im8URk1 2NMviEv4QYSFU9OT8sFoOfHpDJgtLqzjzdGR9zlbGGdnW1gFH/H6Qem46krc6xkrvIMn uAvA== 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=2n47fKiM2da24ENTeYnLfiEuqJfAHR6goaY+lknednU=; b=a0TayLnqV1yyDqGAxiLGH01P/NAVWAQL3G8KvH6HJc9HjHaH9hWmQ9Z9i7hFkzSWs9 zJ6gTyILwUHYHREquIE6KK7MooK3+5SLhW1GE0vgKbd+2QIOD8ZFo5ahFkvJFqCsY5cB w4e6WNnjGGhaOnw8TVaoTOME0Zwsjde2Ix3PHC73kvY5PZ9Jvk60RdTZEtsLtEBOvXcm 19Bc6qb96x+vZsm1XGsX845KtRSfSU/VZSPVlUbp/upoElMqL3L/18ubQujJ+J+CUvO/ R4jmram7jWXusKNRlEYhMYZo+DBqDQ8FJzufVpjOyykamm1DwUTdQ+HCYV23xHU+BuCE iKOQ== X-Gm-Message-State: AOAM531SMFKY4DyPRRfD9yBwGYsIsBL5wehfBtdep3wLiLNa3ynpeIdc JX6ugd5eMIySFDZ/Fc//7fuCSCRL4c4= X-Google-Smtp-Source: ABdhPJwPQK8y3IPBnVqTTU65Bt1nT9fRXAeSU3VNbNMNkzgx3SF7fwmPorlOjRin1SHXIhuQaoEokA== X-Received: by 2002:a37:a78c:: with SMTP id q134mr19626770qke.189.1605904949555; Fri, 20 Nov 2020 12:42:29 -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 j17sm2663946qtn.2.2020.11.20.12.42.28 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:28 -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 0AKKgR48029507 for ; Fri, 20 Nov 2020 20:42:27 GMT Subject: [PATCH v2 098/118] NFSD: Update the NFSv2 READ argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:27 -0500 Message-ID: <160590494786.1340.6179902743258104536.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org The code that sets up rq_vec is refactored so that it is now adjacent to the nfsd_read() call site where it is used. Signed-off-by: Chuck Lever --- fs/nfsd/nfsproc.c | 32 ++++++++++++++++++-------------- fs/nfsd/nfsxdr.c | 34 ++++++++++------------------------ fs/nfsd/xdr.h | 1 - 3 files changed, 28 insertions(+), 39 deletions(-) diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 5b8436af43a9..998a1f94c6f8 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -171,32 +171,36 @@ nfsd_proc_read(struct svc_rqst *rqstp) { struct nfsd_readargs *argp = rqstp->rq_argp; struct nfsd_readres *resp = rqstp->rq_resp; + unsigned int len; u32 eof; + int v; dprintk("nfsd: READ %s %d bytes at %d\n", SVCFH_fmt(&argp->fh), argp->count, argp->offset); + argp->count = min_t(u32, argp->count, NFSSVC_MAXBLKSIZE_V2); + + v = 0; + len = argp->count; + while (len > 0) { + struct page *page = *(rqstp->rq_next_page++); + + rqstp->rq_vec[v].iov_base = page_address(page); + rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE); + len -= rqstp->rq_vec[v].iov_len; + v++; + } + /* Obtain buffer pointer for payload. 19 is 1 word for * status, 17 words for fattr, and 1 word for the byte count. */ - - if (NFSSVC_MAXBLKSIZE_V2 < argp->count) { - char buf[RPC_MAX_ADDRBUFLEN]; - printk(KERN_NOTICE - "oversized read request from %s (%d bytes)\n", - svc_print_addr(rqstp, buf, sizeof(buf)), - argp->count); - argp->count = NFSSVC_MAXBLKSIZE_V2; - } svc_reserve_auth(rqstp, (19<<2) + argp->count + 4); resp->count = argp->count; - resp->status = nfsd_read(rqstp, fh_copy(&resp->fh, &argp->fh), - argp->offset, - rqstp->rq_vec, argp->vlen, - &resp->count, - &eof); + fh_copy(&resp->fh, &argp->fh); + resp->status = nfsd_read(rqstp, &resp->fh, argp->offset, + rqstp->rq_vec, v, &resp->count, &eof); if (resp->status == nfs_ok) resp->status = fh_getattr(&resp->fh, &resp->stat); else if (resp->status == nfserr_jukebox) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 36765a96abae..7488fb396627 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -246,33 +246,19 @@ nfssvc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_readargs *args = rqstp->rq_argp; - unsigned int len; - int v; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - - args->offset = ntohl(*p++); - len = args->count = ntohl(*p++); - p++; /* totalcount - unused */ - len = min_t(unsigned int, len, NFSSVC_MAXBLKSIZE_V2); + if (!svcxdr_decode_fhandle(xdr, &args->fh)) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, sizeof(__be32) * 3); + if (!p) + return XDR_DECODE_FAILED; + args->offset = be32_to_cpup(p++); + args->count = be32_to_cpup(p); + /* totalcount is ignored */ - /* set up somewhere to store response. - * We take pages, put them on reslist and include in iovec - */ - v=0; - while (len > 0) { - struct page *p = *(rqstp->rq_next_page++); - - rqstp->rq_vec[v].iov_base = page_address(p); - rqstp->rq_vec[v].iov_len = min_t(unsigned int, len, PAGE_SIZE); - len -= rqstp->rq_vec[v].iov_len; - v++; - } - args->vlen = v; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } int diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index 84256a6a1ba1..d2ffda96975d 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -27,7 +27,6 @@ struct nfsd_readargs { struct svc_fh fh; __u32 offset; __u32 count; - int vlen; }; struct nfsd_writeargs { From patchwork Fri Nov 20 20:42:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922509 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5BE4CC2D0E4 for ; Fri, 20 Nov 2020 20:42:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id ED5EA22201 for ; Fri, 20 Nov 2020 20:42:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EwN3DDzF" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731732AbgKTUmg (ORCPT ); Fri, 20 Nov 2020 15:42:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731685AbgKTUmg (ORCPT ); Fri, 20 Nov 2020 15:42:36 -0500 Received: from mail-qt1-x844.google.com (mail-qt1-x844.google.com [IPv6:2607:f8b0:4864:20::844]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 033A7C0613CF for ; Fri, 20 Nov 2020 12:42:36 -0800 (PST) Received: by mail-qt1-x844.google.com with SMTP id 7so8152825qtp.1 for ; Fri, 20 Nov 2020 12:42:35 -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=Ulf/SxLJcl+ynfXaAd9A3ayCeLA+sOXQmQJwly/TucA=; b=EwN3DDzF83DhBtVXYCMiVluiKqnNA63gFQgMxgKsd/pXmaq312dcbcOoMj2kyQle7m Pus6tNN8NaUU6ASVwVQC7r22bLGAqGtdPQ9BhbgywYNczS/exlsRXnRqrH6boRgYO/Ip vTjk7knXv0tsuah5yG05tFf/F+OOAoMfY2rct3Fb2wcpTAczd+iI6BmHV3f6hRVD+BT+ NXuDktkinbeMuL1H6R08qfdwITNiI8jyC2fN7p0nGuIHblAzGEw4lfEz7SQUsM5BNwkq FcCU//ABBN2+HpXsLOefvdMMEYW0vYXZUECm8XuSsl3/DwW35lr3ZVLsRt+uEU6v62K9 yAvg== 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=Ulf/SxLJcl+ynfXaAd9A3ayCeLA+sOXQmQJwly/TucA=; b=lsS1yd3+jXcVwDikPZv3KspdfjOYkboyqX+Ch+MaMEwNaXyE4G2JGGcR9mk4ukxxOW RLk9cDEc89dAFSTPk2UW22B+6LRfwul2OxL4BjBqgf5KYlWC6PR6zGc+iYFUpB4xKl2c opQ7aOvixIOHPYQtArgLoZp5x1sk3SR3OxfUPRdkRHtxeLTrm0pfDCDwYFrrIAkjPU6B EUXVD+7mYHaz/v5XoArHP8Epny5m4Kx//f4R7MCYGG0/9qSgeTKTIX34jk3MV2HzaWn7 0rArZzGccsDy8aihwnovLiyUnmEjOOQUZqVBL/6o+nKS/is4U88Sk/9rVcDqFqllzWqO cXvg== X-Gm-Message-State: AOAM533n4EUPpLhuQi2X5fbKEINfmnBiSTgeM1M9MtZMjZYS8obCkWc7 MYHsEyp4u59WMj/P5SGw0kMIZ80CHUw= X-Google-Smtp-Source: ABdhPJztgwjVgdIV8pvhEdMKLFfCGev8bKoTCHgLyu2EVNqRAAuF2ZpmK9VG2aUPA85wVE+bL2F6SA== X-Received: by 2002:ac8:75da:: with SMTP id z26mr17176554qtq.36.1605904954920; Fri, 20 Nov 2020 12:42:34 -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 r62sm2824700qkd.80.2020.11.20.12.42.34 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:34 -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 0AKKgXEQ029510 for ; Fri, 20 Nov 2020 20:42:33 GMT Subject: [PATCH v2 099/118] NFSD: Update the NFSv2 WRITE argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:33 -0500 Message-ID: <160590495320.1340.4131707414205861028.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 56 ++++++++++++++++++++---------------------------------- 1 file changed, 21 insertions(+), 35 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 7488fb396627..68a17a9b750f 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -264,47 +264,33 @@ nfssvc_decode_readargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_writeargs *args = rqstp->rq_argp; - unsigned int len, hdr, dlen; struct kvec *head = rqstp->rq_arg.head; + struct kvec *tail = rqstp->rq_arg.tail; + size_t remaining; - p = decode_fh(p, &args->fh); + if (!svcxdr_decode_fhandle(xdr, &args->fh)) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, sizeof(__be32) * 4); if (!p) - return 0; - - p++; /* beginoffset */ - args->offset = ntohl(*p++); /* offset */ - p++; /* totalcount */ - len = args->len = ntohl(*p++); - /* - * The protocol specifies a maximum of 8192 bytes. - */ - if (len > NFSSVC_MAXBLKSIZE_V2) - return 0; - - /* - * Check to make sure that we got the right number of - * bytes. - */ - hdr = (void*)p - head->iov_base; - if (hdr > head->iov_len) - return 0; - dlen = head->iov_len + rqstp->rq_arg.page_len - hdr; + return XDR_DECODE_FAILED; + p++; /* beginoffset is ignored */ + args->offset = be32_to_cpup(p++); + p++; /* totalcount is ignored */ - /* - * Round the length of the data which was specified up to - * the next multiple of XDR units and then compare that - * against the length which was actually received. - * Note that when RPCSEC/GSS (for example) is used, the - * data buffer can be padded so dlen might be larger - * than required. It must never be smaller. - */ - if (dlen < XDR_QUADLEN(len)*4) - return 0; + /* opaque data */ + args->len = be32_to_cpup(p++); + if (args->len > NFSSVC_MAXBLKSIZE_V2) + return XDR_DECODE_FAILED; + remaining = head->iov_len + rqstp->rq_arg.page_len + tail->iov_len; + remaining -= xdr_stream_pos(xdr); + if (remaining < xdr_align_size(args->len)) + return XDR_DECODE_FAILED; + args->first.iov_base = p; + args->first.iov_len = head->iov_len - xdr_stream_pos(xdr); - args->first.iov_base = (void *)p; - args->first.iov_len = head->iov_len - hdr; - return 1; + return XDR_DECODE_DONE; } int From patchwork Fri Nov 20 20:42:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922511 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C54EBC2D0E4 for ; Fri, 20 Nov 2020 20:42:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6B46522201 for ; Fri, 20 Nov 2020 20:42:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WhDWHszm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731409AbgKTUml (ORCPT ); Fri, 20 Nov 2020 15:42:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33948 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731110AbgKTUml (ORCPT ); Fri, 20 Nov 2020 15:42:41 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45F17C0613CF for ; Fri, 20 Nov 2020 12:42:41 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id g19so5340491qvy.2 for ; Fri, 20 Nov 2020 12:42:41 -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=Sd8dJ+vhY4totOWquvfDXBmvbzE5i3ocYTvi910W9zE=; b=WhDWHszmVJf4XuCQl32MhL+YtV0zl+CGeP5eA406VYKxmV4l/v+EsTtqmGCZEWCs4L KGM0M3YYYwX4rA3UoWgcZO88/5Zdx8UjhjMqUqO3OF9dsvg+WKXJOI0SazrTn3ET8ZoN DlZ3NbZjIRkwGIboy1L4hKg+2JymaJoUb3nMxqFiRWVH7B7mQo4xf5+pHWjCBr0Db7tW /ZUUw7qEi7tTOpl3TE+dvmbeKn+5ixAi3bnlPmB7GiOIk/MXsMnplHwLbrn0NIxNNfMB AG0Pa2DoZb/rvGQC4zMJt6xc+WMDcc08TlVH0clZ1lTlZGfUhgnvsnxLsXnQmT/xY1V3 qcew== 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=Sd8dJ+vhY4totOWquvfDXBmvbzE5i3ocYTvi910W9zE=; b=ir5lSzlD0jb+C7jNUp2GoufUxEYMlo3k16usDeymaYbDuejntFThqf/dhbvafpJRcW KBAJwLBHbGA50rRZ2saVQx2xI/tZoA8pNxCyAI2XTv9pfdg/YdFYYTEvu+SwZ6e+0QEg PvhgC4TJCh3eM9OmtannFbmiW0G/EegkdcxodPxlm+W9TdZCA6bA8sSjF2M8niWf4e/M IFaFMZmpSACupSss8/1Rv0D8axkxYpZgg8fk3SV/Fnj84uS0orpunrZ+PN8LCkDqSqwY o5qBYsNWTm72pKHdg6WujqTPk1f4+janbYL5/Xk7L2h8/OwiLU7CXovQzNEFCU2b90+Z k0zw== X-Gm-Message-State: AOAM530V0SHFRuOvozzrK7VOT+ZB9Y75mL73EanWhEBKo0Ri7P4hZ/wv 3OIVmtheDC8xo4++rDiXkI3rDCgObgk= X-Google-Smtp-Source: ABdhPJxyjAXHtPoYLxTE+b5R09OCjRW4A/87JAlc8EXStWMVdnOsLzvX+dP7XfiWJL44dVi51Hb/Zg== X-Received: by 2002:a0c:fbac:: with SMTP id m12mr18352801qvp.52.1605904960211; Fri, 20 Nov 2020 12:42:40 -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 c1sm2794402qkd.74.2020.11.20.12.42.39 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:39 -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 0AKKgcl3029513 for ; Fri, 20 Nov 2020 20:42:38 GMT Subject: [PATCH v2 100/118] NFSD: Update the NFSv2 READLINK argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:38 -0500 Message-ID: <160590495858.1340.4398743109655305209.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org If the code that sets up the sink buffer for nfsd_readlink() is moved adjacent to the nfsd_readlink() call site that uses it, then the only argument is a file handle, and the fhandle decoder can be used instead. Signed-off-by: Chuck Lever --- fs/nfsd/nfsproc.c | 9 +++++---- fs/nfsd/nfsxdr.c | 13 ------------- fs/nfsd/xdr.h | 6 ------ 3 files changed, 5 insertions(+), 23 deletions(-) diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 998a1f94c6f8..94b1fa0c3c58 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -149,14 +149,15 @@ nfsd_proc_lookup(struct svc_rqst *rqstp) static __be32 nfsd_proc_readlink(struct svc_rqst *rqstp) { - struct nfsd_readlinkargs *argp = rqstp->rq_argp; + struct nfsd_fhandle *argp = rqstp->rq_argp; struct nfsd_readlinkres *resp = rqstp->rq_resp; + char *buffer = page_address(*(rqstp->rq_next_page++)); dprintk("nfsd: READLINK %s\n", SVCFH_fmt(&argp->fh)); /* Read the symlink. */ resp->len = NFS_MAXPATHLEN; - resp->status = nfsd_readlink(rqstp, &argp->fh, argp->buffer, &resp->len); + resp->status = nfsd_readlink(rqstp, &argp->fh, buffer, &resp->len); fh_put(&argp->fh); return rpc_success; @@ -669,9 +670,9 @@ static const struct svc_procedure nfsd_procedures2[18] = { }, [NFSPROC_READLINK] = { .pc_func = nfsd_proc_readlink, - .pc_decode = nfssvc_decode_readlinkargs, + .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfssvc_encode_readlinkres, - .pc_argsize = sizeof(struct nfsd_readlinkargs), + .pc_argsize = sizeof(struct nfsd_fhandle), .pc_ressize = sizeof(struct nfsd_readlinkres), .pc_cachetype = RC_NOCACHE, .pc_xdrressize = ST+1+NFS_MAXPATHLEN/4, diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 68a17a9b750f..d2af4ab51418 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -320,19 +320,6 @@ nfssvc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) return xdr_argsize_check(rqstp, p); } -int -nfssvc_decode_readlinkargs(struct svc_rqst *rqstp, __be32 *p) -{ - struct nfsd_readlinkargs *args = rqstp->rq_argp; - - p = decode_fh(p, &args->fh); - if (!p) - return 0; - args->buffer = page_address(*(rqstp->rq_next_page++)); - - return xdr_argsize_check(rqstp, p); -} - int nfssvc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) { diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index d2ffda96975d..288c29a999db 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -52,11 +52,6 @@ struct nfsd_renameargs { unsigned int tlen; }; -struct nfsd_readlinkargs { - struct svc_fh fh; - char * buffer; -}; - struct nfsd_linkargs { struct svc_fh ffh; struct svc_fh tfh; @@ -150,7 +145,6 @@ int nfssvc_decode_readargs(struct svc_rqst *, __be32 *); int nfssvc_decode_writeargs(struct svc_rqst *, __be32 *); int nfssvc_decode_createargs(struct svc_rqst *, __be32 *); int nfssvc_decode_renameargs(struct svc_rqst *, __be32 *); -int nfssvc_decode_readlinkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_linkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_symlinkargs(struct svc_rqst *, __be32 *); int nfssvc_decode_readdirargs(struct svc_rqst *, __be32 *); From patchwork Fri Nov 20 20:42:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922513 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8416CC56202 for ; Fri, 20 Nov 2020 20:42:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 20A7022201 for ; Fri, 20 Nov 2020 20:42:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tUzoo+7k" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731685AbgKTUmr (ORCPT ); Fri, 20 Nov 2020 15:42:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33966 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731110AbgKTUmr (ORCPT ); Fri, 20 Nov 2020 15:42:47 -0500 Received: from mail-qt1-x830.google.com (mail-qt1-x830.google.com [IPv6:2607:f8b0:4864:20::830]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 06AF6C0613CF for ; Fri, 20 Nov 2020 12:42:47 -0800 (PST) Received: by mail-qt1-x830.google.com with SMTP id f93so8088805qtb.10 for ; Fri, 20 Nov 2020 12:42:46 -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=XlTZ/HGy0ucXQaI1X53pA8JPUG61jLS6Bwy2Wee7MZs=; b=tUzoo+7ksYsSP96lN/pl3eJmOB4/SU7oU2kt1iLJp+SYe6u5Q5WIzgSIxu0h+kbsJD T/Plh3vHlFjo3g4uPbcfSrY/bR9f9snLCe952dx6Shg3/7e9PzpL3Th9V+vI64FvCWHN LIXuT/pdaidofCxJwijyeVzeNMU9456JogKRzWWzhzqv1W/M4P6G62Q0R5EADKC3/0Sb JdQx6VvGnL1pP7R3nqqWGviBgBmNURgF+bA8KfFtuggx0LFstUyshBRPTQP3X4gipgo7 bOedsLik4Rei0z9LNJowZ+ouPXWu8XQ3vfRcCMpiAnRsM+JriN4eylb/a2zwoocV26Z1 axqw== 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=XlTZ/HGy0ucXQaI1X53pA8JPUG61jLS6Bwy2Wee7MZs=; b=eMva4Y0H5JIjn34jW3pkNNMtzENoqeeguTMUwKUPhS1sCoEiZ8oO8DGeCjitRPl0XD V0k6ueskK9axRVixSKLytPr6QDyKo8XzmrIQcmw+Eip6WFvW49rma3JSC3hjgcyTHAjU xaWpgzknHBgiYKSj3HS3iaw95LELsOMnNY9cTTI8/HGMioFlFSk4s/l4nBMShnsWogAn zigxqdT2jfdesF215RzT1Y15Odq54e4o2XmAOVftI4pMT+AT2/ah7a6I9++8n1zkllVj 3qKeQ0qK8933QmEet3FIMpaLGD23PXnddBdgjT4qd+QabSxnArSknBc65GObnuui2OxG nktA== X-Gm-Message-State: AOAM532npnnaCjX6nrVbwN1jHnsYtVox1yd/IxVpI2Hqbu9DpxcmKnIk EQLXWf5OTnS7FSXZngWAo+y4OSADDkA= X-Google-Smtp-Source: ABdhPJynAaDAzjhKcT+IGbwuboOSmPpNlD9yJWQXx42CKJVUscLkNuOaI7sZWrjvZby97oQiZGtKYA== X-Received: by 2002:ac8:4e87:: with SMTP id 7mr17020705qtp.310.1605904965882; Fri, 20 Nov 2020 12:42:45 -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 c6sm3021347qkg.54.2020.11.20.12.42.44 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:45 -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 0AKKgiY6029516 for ; Fri, 20 Nov 2020 20:42:44 GMT Subject: [PATCH v2 101/118] NFSD: Add helper to set up the pages where the dirlist is encoded From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:44 -0500 Message-ID: <160590496391.1340.15643192492842825964.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Add a helper similar to nfsd3_init_dirlist_pages(). Signed-off-by: Chuck Lever --- fs/nfsd/nfsproc.c | 29 ++++++++++++++++++----------- fs/nfsd/nfsxdr.c | 2 -- fs/nfsd/xdr.h | 1 - 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c index 94b1fa0c3c58..3bbbb2a000bb 100644 --- a/fs/nfsd/nfsproc.c +++ b/fs/nfsd/nfsproc.c @@ -553,6 +553,20 @@ nfsd_proc_rmdir(struct svc_rqst *rqstp) return rpc_success; } +static void nfsd_init_dirlist_pages(struct svc_rqst *rqstp, + struct nfsd_readdirres *resp, + int count) +{ + count = min_t(u32, count, PAGE_SIZE); + + /* Convert byte count to number of words (i.e. >> 2), + * and reserve room for the NULL ptr & eof flag (-2 words) */ + resp->buflen = (count >> 2) - 2; + + resp->buffer = page_address(*rqstp->rq_next_page); + rqstp->rq_next_page++; +} + /* * Read a portion of a directory. */ @@ -561,31 +575,24 @@ nfsd_proc_readdir(struct svc_rqst *rqstp) { struct nfsd_readdirargs *argp = rqstp->rq_argp; struct nfsd_readdirres *resp = rqstp->rq_resp; - int count; loff_t offset; + __be32 *buffer; dprintk("nfsd: READDIR %s %d bytes at %d\n", SVCFH_fmt(&argp->fh), argp->count, argp->cookie); - /* Shrink to the client read size */ - count = (argp->count >> 2) - 2; - - /* Make sure we've room for the NULL ptr & eof flag */ - count -= 2; - if (count < 0) - count = 0; + nfsd_init_dirlist_pages(rqstp, resp, argp->count); + buffer = resp->buffer; - resp->buffer = argp->buffer; resp->offset = NULL; - resp->buflen = count; resp->common.err = nfs_ok; /* Read directory and encode entries on the fly */ offset = argp->cookie; resp->status = nfsd_readdir(rqstp, &argp->fh, &offset, &resp->common, nfssvc_encode_entry); - resp->count = resp->buffer - argp->buffer; + resp->count = resp->buffer - buffer; if (resp->offset) *resp->offset = htonl(offset); diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index d2af4ab51418..2664101aa1dc 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -382,8 +382,6 @@ nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) return 0; args->cookie = ntohl(*p++); args->count = ntohl(*p++); - args->count = min_t(u32, args->count, PAGE_SIZE); - args->buffer = page_address(*(rqstp->rq_next_page++)); return xdr_argsize_check(rqstp, p); } diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index 288c29a999db..d700838f6512 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -73,7 +73,6 @@ struct nfsd_readdirargs { struct svc_fh fh; __u32 cookie; __u32 count; - __be32 * buffer; }; struct nfsd_stat { From patchwork Fri Nov 20 20:42:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922515 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 30C25C56202 for ; Fri, 20 Nov 2020 20:42:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C49DE22201 for ; Fri, 20 Nov 2020 20:42:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RlEv/CpY" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731552AbgKTUmw (ORCPT ); Fri, 20 Nov 2020 15:42:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731110AbgKTUmw (ORCPT ); Fri, 20 Nov 2020 15:42:52 -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 CCF9BC0613CF for ; Fri, 20 Nov 2020 12:42:51 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id d9so10205198qke.8 for ; Fri, 20 Nov 2020 12:42:51 -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=YPhtyK2Sr8bdn8/jf70GHGqh2pF8GuLPrHSBtyujEwE=; b=RlEv/CpYsdi/aDROEsDfm1SymxewQt1CxX9WeG9WoG9W3ocX0+dLnpXZFxO7xT96n4 AVnwG0VK1D+8K/V+Xn+HDeOpHcqeYPbpkqOV0lHnjCVM/p5ixIesSi6Oy4WeHozPHe+y KSy825AGAqxpTk0Gblkwi1rgFK5pgfcKx1K5Xu+pswD4GgvGQKofJbsyT2qcGaEr8aV+ 0kR5RizVduf6HiB9arOtYNWx17VGA8Ba5QxHGqL8zxojxp0GaO81zzLAvCo7ulg2hkSt 6QIgA01v1mjNWsBjuL0YnKz8Q12P9dBAV7Ev5WRM0cq3VGaVoHnvSsayzXiqTsdO4f+c Tw2Q== 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=YPhtyK2Sr8bdn8/jf70GHGqh2pF8GuLPrHSBtyujEwE=; b=gx/Ip7lo53rdiD34wCa4w3p5R4vCdQsnv7nll28rExOsEKBNqS7JFdnNKKJpzbzwrZ KBNeYSc7OrYgnEkG9fKIOMI5saOY7z+YZuMto6xshzGb/YQ+iC96lnO42r3k9qZ/uudN tOau8Td/XaP+pKd0997A7GLIVcuzBxAhBnK++lqvA78gd1ynKk6PXzzENQp5qXFvY3vx MGZA6Vt3TDxiZ5pDJe9q5tvWNgs92vvdvY0Vq02TiBM0DZokmjm+cgS1So0DTnHy/g/y 1S5HRFii7OY2nEW7g/X7EobZZBgjnUMmN6FJ2MEyNjpKoMPsJSybdgtnL2Ei1zBr+PUR 6QUA== X-Gm-Message-State: AOAM530XHl+tQ2nZRZRxw/ZYBi11Lr6hhipApQpwH3paYNq9JVBs+4SQ fQlYmQb8fUuE55OUXAWVAjoy3YUKx4w= X-Google-Smtp-Source: ABdhPJyBaqDdsXOXbz2O6d49pwz/8u5q5z9GczCTqbuUVHOGPcoDYRtVG/vNIRqzOldakVMtyL1wFQ== X-Received: by 2002:a37:6195:: with SMTP id v143mr17231766qkb.71.1605904970801; Fri, 20 Nov 2020 12:42:50 -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 82sm2861857qke.76.2020.11.20.12.42.49 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42:50 -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 0AKKgnxW029520 for ; Fri, 20 Nov 2020 20:42:49 GMT Subject: [PATCH v2 102/118] NFSD: Update the NFSv2 READDIR argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:49 -0500 Message-ID: <160590496908.1340.11226739774715535342.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org As an additional clean up, move code not related to XDR decoding into readdir's .pc_func call out. Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 2664101aa1dc..6f4115303f58 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -375,15 +375,18 @@ nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_readdirargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_readdirargs *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); + if (!svcxdr_decode_fhandle(xdr, &args->fh)) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, sizeof(__be32) * 2); if (!p) - return 0; - args->cookie = ntohl(*p++); - args->count = ntohl(*p++); + return XDR_DECODE_FAILED; + args->cookie = be32_to_cpup(p++); + args->count = be32_to_cpup(p); - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } /* From patchwork Fri Nov 20 20:42:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922517 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DE6CC56202 for ; Fri, 20 Nov 2020 20:42:58 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 423C022201 for ; Fri, 20 Nov 2020 20:42:58 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D9hm5N0V" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728514AbgKTUm5 (ORCPT ); Fri, 20 Nov 2020 15:42:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728104AbgKTUm5 (ORCPT ); Fri, 20 Nov 2020 15:42:57 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 41A29C0613CF for ; Fri, 20 Nov 2020 12:42:57 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id a13so10251372qkl.4 for ; Fri, 20 Nov 2020 12:42:57 -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=f30Xo7DK/c+DEe+I+sHL9V3M2tixuG43UPm6leFj/LY=; b=D9hm5N0VLfcHWXyxn+GK7dCvu3TJVPqpfFix2A0sMTm1HmpsbJrN4FrSMsGI87rdap u59kP3PDu2dz5BsTo3s4YCstwky6swBRkT6Avc5I3IxXstwKnLFfKDwMMVfmv5wHIWjZ UeVvCSYneclwxXepb8DkJVmUq0wI2GotHTDSrrRVdunVT6K4h7gioV4Gc3LKgVYR0cuG 25oAv1oAbA1CxccUV8e/97apkMD+9h1dN39hr+euxpHBJ1eoVPL6JpeEDORStfTNJ/mn INouVd7+O16rRZSERDa77QyGXXobmAcsL63fkdaFaLRwMxoP38CBKVNMGC1dXTWzZUc3 ITOg== 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=f30Xo7DK/c+DEe+I+sHL9V3M2tixuG43UPm6leFj/LY=; b=eZCZd1eRwjx166Y8bCYoOP5GF8Emllnp4gDFIZ0kTdDCKz+qi7ndNBngiZOOdf/wVw l/E49q/7yjUWgjJYN7RAEmdyf6VEjl6Pl072ed+neBEmP9RoIwG5n+RFl0hshi3HmlaW SZrie56MjAkMFMzGMZL3skRGrU4w9o5/xFzr53TgLD3j8FnQ9oHTbXJarHB6Oc6eaDVG YTWvANAVUyS+XpU5LDZ7f6dFLf4cMl60ORZAL3Ekn0af2jvTkl4ooB7M7fryjRMAiOH5 ZHDrFJbSPKThHe6Y8loa0P/V4tWVsv8qgxKgm9K5ZjkV0hwEYiyKEwmsv3UaP+wWBqLX UgMg== X-Gm-Message-State: AOAM531GVBWpHmLAe5rq+MmH8EuFvlREf18M6juNCZX8O41A/gQuS/Jq FVITtwvSRPoTD32iIDuqOCwztH+DY3Q= X-Google-Smtp-Source: ABdhPJyCTYBzbrQxzBdLHJYCdDQ9+QGVDoy+Syf9ci6mKg5wKXE0mwat4odoXUcaIWTnvHv33kSvuA== X-Received: by 2002:a37:9ecc:: with SMTP id h195mr18784156qke.103.1605904976214; Fri, 20 Nov 2020 12:42:56 -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 l28sm2642943qkl.7.2020.11.20.12.42.55 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:42: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 0AKKgsZY029523 for ; Fri, 20 Nov 2020 20:42:54 GMT Subject: [PATCH v2 103/118] NFSD: Update NFSv2 diropargs decoding to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:54 -0500 Message-ID: <160590497442.1340.1904406098812168977.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 6f4115303f58..9986b4ea78f4 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -86,6 +86,39 @@ decode_filename(__be32 *p, char **namp, unsigned int *lenp) return p; } +static enum xdr_decode_result +svcxdr_decode_filename(struct xdr_stream *xdr, char **name, unsigned int *len) +{ + u32 size, i; + __be32 *p; + char *c; + + if (xdr_stream_decode_u32(xdr, &size) < 0) + return XDR_DECODE_FAILED; + if (size == 0 || size > NFS_MAXNAMLEN) + return XDR_DECODE_FAILED; + p = xdr_inline_decode(xdr, size); + if (!p) + return XDR_DECODE_FAILED; + + *len = size; + *name = (char *)p; + for (i = 0, c = *name; i < size; i++, c++) + if (*c == '\0' || *c == '/') + return XDR_DECODE_FAILED; + + return XDR_DECODE_DONE; +} + +static enum xdr_decode_result +svcxdr_decode_diropargs(struct xdr_stream *xdr, struct svc_fh *fhp, + char **name, unsigned int *len) +{ + if (!svcxdr_decode_fhandle(xdr, fhp)) + return XDR_DECODE_FAILED; + return svcxdr_decode_filename(xdr, name, len); +} + static __be32 * decode_sattr(__be32 *p, struct iattr *iap, struct user_namespace *userns) { @@ -234,13 +267,10 @@ nfssvc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_diropargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_diropargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->fh)) - || !(p = decode_filename(p, &args->name, &args->len))) - return 0; - - return xdr_argsize_check(rqstp, p); + return svcxdr_decode_diropargs(xdr, &args->fh, &args->name, &args->len); } int From patchwork Fri Nov 20 20:42:59 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922519 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28496C56202 for ; Fri, 20 Nov 2020 20:43:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BBADD22201 for ; Fri, 20 Nov 2020 20:43:03 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kd1et1Rq" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731110AbgKTUnD (ORCPT ); Fri, 20 Nov 2020 15:43:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34012 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728104AbgKTUnC (ORCPT ); Fri, 20 Nov 2020 15:43:02 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87428C0613CF for ; Fri, 20 Nov 2020 12:43:02 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id a13so10251605qkl.4 for ; Fri, 20 Nov 2020 12:43:02 -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=2eTSmBY4E9XQiOKQqjOI701cyVedx2LDmxNwrJJ3iv0=; b=kd1et1RqvDid7Czli1HAdf/ER3223f18McYmXicPMVMCu+o2Swv9CIRw89qEa5rkXi btWknGPhkwmrOTeL4sNFSmoRvY2ai+q2Zf3YSrzzVcDXOWT7HTuCOQ4liTyRCM7zrVX+ UHRq6D9yJotLVpYmNKMnFRspI1XuIo6FQx9rFQ4bLZ/IlLVMVvvgaTMSGrVoLdXOorSx Ng9hD0ZImPJ9yK6JtHlZjZx7D76c60k/BHaaTVasOX8rE7dsBIFH7i5Q/CW5y+5ReOqQ 3nYBzfCExtbG/+TAYGtcIme7j74fE9DUu7eIzlGDOn8RPg4l+aZ/ITWjCNLLmYIrkbWp 2+IQ== 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=2eTSmBY4E9XQiOKQqjOI701cyVedx2LDmxNwrJJ3iv0=; b=SKZzapyBqMigPwfTlxEwuYoLgQ5HHsfZB8dB+A87AnsqrqO2OFyH2VVFCCMH5LWJxn 90yV2ewzY9hUa08xI6F2zU0R7dbdYNUNQvLBRdXBg+FXrcRqrjxVsMDvB5LMF+gJavEU W7+lKbTYp86v7rxrV+aQshvgvmH+UqAiJEarzFkBJPYUj5iGbINhSWjgfeXXjMkdJI3N NBwYap3AefPSrz1fF27XfDmVz6U9mlplXCpnytFKRZwBx/WH8BQgUA2d5U/+6E5Wd3F+ 9rsL2tShCR+yEFZUQNKari7OlLYSdvVlni6J6gGGNkOPzbfsnhYCMrxJkCw0eDyE1NqL 2fhw== X-Gm-Message-State: AOAM533P5ioX/u7NWI8rhbUV7/VdxJsKgi8waFCWV7uB8TMm/lLF+6+F DOMRpdBemx/13elyXyPWDCuZIS+N00U= X-Google-Smtp-Source: ABdhPJzI2YDWRLRthlQXBuhXO5CneGYYItqeAjms+c107AVNN70T12j7akqp5Uc9wkc3WvVpnzE83w== X-Received: by 2002:a37:506:: with SMTP id 6mr18193688qkf.412.1605904981500; Fri, 20 Nov 2020 12:43:01 -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 k15sm2719352qke.75.2020.11.20.12.43.00 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:00 -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 0AKKgxR6029526 for ; Fri, 20 Nov 2020 20:42:59 GMT Subject: [PATCH v2 104/118] NFSD: Update the NFSv2 RENAME argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:42:59 -0500 Message-ID: <160590497982.1340.7936056535783631669.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 9986b4ea78f4..94c637a0a24d 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -339,15 +339,12 @@ nfssvc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_renameargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->ffh)) - || !(p = decode_filename(p, &args->fname, &args->flen)) - || !(p = decode_fh(p, &args->tfh)) - || !(p = decode_filename(p, &args->tname, &args->tlen))) - return 0; - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_diropargs(xdr, &args->ffh, &args->fname, &args->flen)) + return XDR_DECODE_FAILED; + return svcxdr_decode_diropargs(xdr, &args->tfh, &args->tname, &args->tlen); } int From patchwork Fri Nov 20 20:43:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922521 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4391C56202 for ; Fri, 20 Nov 2020 20:43:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5C28422201 for ; Fri, 20 Nov 2020 20:43:10 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nb21IT1u" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728076AbgKTUnJ (ORCPT ); Fri, 20 Nov 2020 15:43:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34028 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726556AbgKTUnJ (ORCPT ); Fri, 20 Nov 2020 15:43:09 -0500 Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5FA8C0613CF for ; Fri, 20 Nov 2020 12:43:07 -0800 (PST) Received: by mail-qk1-x741.google.com with SMTP id r7so10233336qkf.3 for ; Fri, 20 Nov 2020 12:43:07 -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=+f0tdE9Z4Q1BQjsV9j3ElRPSPLtgiYcLW2//l5ETt+4=; b=nb21IT1ux4Q8W2mViCbqvRzvHF2sUQQVbNWKmEX5WOSSM3HQo5Dr+ZkpmU6dDUNJWc eIW14Q5SxI4dMdzNB+jgUMA1jIlwP7AH1mcqL39hzMXBkiAOwLmAwp9bvH58tw/4VsHu xo3A+RiLkPCOUuGsUBfJJj8c1vb+Nmz7yPpTAovA8tGtnqt+P2Eo0fNAQp8aI8WDq5rW 76knR6XGAq3T5wrY/I+03QPVpmEzuheH45RYWIUJXuHl+NKilbm6FODP8mLUgKusIrYh XDuFGmVYy+GA7KIkDqyfRqY0qOIl4nqeje2UCZdLkymoBxRrKZjUM7Xwe3ZF9pvT0NsZ EG5w== 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=+f0tdE9Z4Q1BQjsV9j3ElRPSPLtgiYcLW2//l5ETt+4=; b=cDtvapd6UaaDxkCOkOGPsC9U82vXnypnke07zKQSnp7uY0zjlu2LdGkHAEm1wwCHw8 2ZUSbL4CGuD8COfkIStN4ZcE53J9Cvcd5TPev9/QJEXYxwBTvPgpLEYF3+mhamPU1i+F IwURf00311b5B2dSqxEU+5c7C8KIyU3kE9n+K3mFYnIOwnB1yAJP03lSRIr1h3de4Eal 2ntMYheXj2H0ZMT21ErG5wgehtp8b5vq2/99yUbiTQhUY+9mcqxB3jqLnJMWP9tmRpuf Um3BFIYOqWG/LOAZH0aOw0vEsczAb4n/Z6UcA+OeOLbnNyf40Z3+dFKSsmuWCQfuTBJm SMeg== X-Gm-Message-State: AOAM530NWFhaMt19AYN7D2taIxOI0Bm6PVcMQzy0frKww60e3/9jEE4E iAK9n7yl+pMMi1Fltg4XjVZE8icHljI= X-Google-Smtp-Source: ABdhPJwUr3wTD+E+a1LycvxuHYguD2iyJDBbDZiM+HOnhdejnZ65XnHEpmcQLEdS/nQNfR4GZHvoLw== X-Received: by 2002:a37:c20b:: with SMTP id i11mr18463803qkm.52.1605904986653; Fri, 20 Nov 2020 12:43:06 -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 c4sm2751729qtn.39.2020.11.20.12.43.05 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:06 -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 0AKKh57a029529 for ; Fri, 20 Nov 2020 20:43:05 GMT Subject: [PATCH v2 105/118] NFSD: Update the NFSv2 LINK argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:05 -0500 Message-ID: <160590498515.1340.24844311065052603.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 94c637a0a24d..40def4a461df 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -350,14 +350,12 @@ nfssvc_decode_renameargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_linkargs *args = rqstp->rq_argp; - if (!(p = decode_fh(p, &args->ffh)) - || !(p = decode_fh(p, &args->tfh)) - || !(p = decode_filename(p, &args->tname, &args->tlen))) - return 0; - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_fhandle(xdr, &args->ffh)) + return XDR_DECODE_FAILED; + return svcxdr_decode_diropargs(xdr, &args->tfh, &args->tname, &args->tlen); } int From patchwork Fri Nov 20 20:43:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922523 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A3027C2D0E4 for ; Fri, 20 Nov 2020 20:43:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4B7B022201 for ; Fri, 20 Nov 2020 20:43:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="De3fVa9I" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728104AbgKTUnN (ORCPT ); Fri, 20 Nov 2020 15:43:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34044 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726556AbgKTUnN (ORCPT ); Fri, 20 Nov 2020 15:43:13 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B7A5C0613CF for ; Fri, 20 Nov 2020 12:43:13 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id 199so10193770qkg.9 for ; Fri, 20 Nov 2020 12:43:13 -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=S6cJA85/cKLuYE4uenga9e/KdXiR9eVJLE1T9kzJtPk=; b=De3fVa9IFO3kfDSqnIawbAzIJvQJo/QOTiWkL26cC1P5hT/gicYHihRd0rxpwarzOt PD0QSbVGg4lnuSfaf+BbTb5Nkff3+HLX2wS7m25YRgaLWzxMFo7tNlodYVNn2iIAINfn 2tn/oFHls8Aj9TTQf7fb78WTd+AlvB9yoxuw+JG8V7BQXIXoynpDiJhTdS277OM41Ukg AXII+9tVLccngpDAg7iPr1WYhb1ohcRFqcZiTupGM6nj0J9xDzA4tw9Si5hy2VpDNxfP cPvx9/09mPs2K8QRQnmuGDhIhIQVez610K3dvMPIBNU92lJzy8jM/Ty/aWsjzIKYH+IS kLrA== 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=S6cJA85/cKLuYE4uenga9e/KdXiR9eVJLE1T9kzJtPk=; b=REJrVxrvzqR7fkAqR0KrFxmvmaJNfxJmxoBMkbqKIZHJJRANwqbu14cxndJaPg3/DI FbQC5LwH6Y3qq1euzT88/KICv4rYT8vSPdM3aN4SPsgDrbudjy+wgBdaj2wO+5FAmfCI C3rJo1vJStsPxtsPDnYmbi0urSVSxSVcMn1rONgUbok5PzRK2tW8rX40dvgV9ByaFK8e NjnlfjlZRia2W+idAuikHzG0D/FdBKMDi7ZWNqTInpk1P5vaAraGwWmI0O7UmaPlchO9 lXaW2aWUj2qjyal/pLVde0AngNyX94NozXj1/PdNdANb7H2nS26j7idIsvB13gejND0t QNyQ== X-Gm-Message-State: AOAM533L+gmEj5+FUab33vydgynKwtCemXhKVVjUO95OgXs/20TZqL3v BCba5RQjjKEtkIkC+/GGzHUdOUccuiM= X-Google-Smtp-Source: ABdhPJy4H0GvDp6URPJpvn0I+pE5Zpv+9ipA3iAMA1w3HccDYxSN44LVunWe4xiabltH6iNMFWZfXg== X-Received: by 2002:a37:951:: with SMTP id 78mr18388905qkj.47.1605904992028; Fri, 20 Nov 2020 12:43:12 -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 i52sm2991921qtc.3.2020.11.20.12.43.11 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:11 -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 0AKKhA0A029532 for ; Fri, 20 Nov 2020 20:43:10 GMT Subject: [PATCH v2 106/118] NFSD: Update the NFSv2 SETATTR argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:10 -0500 Message-ID: <160590499026.1340.16944912190360448062.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 77 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 40def4a461df..c34446c650ca 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -174,6 +174,79 @@ decode_sattr(__be32 *p, struct iattr *iap, struct user_namespace *userns) return p; } +static enum xdr_decode_result +svcxdr_decode_sattr(struct svc_rqst *rqstp, struct xdr_stream *xdr, + struct iattr *iap) +{ + u32 tmp1, tmp2; + __be32 *p; + + p = xdr_inline_decode(xdr, sizeof(__be32) * 8); + if (!p) + return XDR_DECODE_FAILED; + + iap->ia_valid = 0; + + /* + * Some Sun clients put 0xffff in the mode field when they + * mean 0xffffffff. + */ + tmp1 = be32_to_cpup(p++); + if (tmp1 != (u32)-1 && tmp1 != 0xffff) { + iap->ia_valid |= ATTR_MODE; + iap->ia_mode = tmp1; + } + + tmp1 = be32_to_cpup(p++); + if (tmp1 != (u32)-1) { + iap->ia_uid = make_kuid(nfsd_user_namespace(rqstp), tmp1); + if (uid_valid(iap->ia_uid)) + iap->ia_valid |= ATTR_UID; + } + + tmp1 = be32_to_cpup(p++); + if (tmp1 != (u32)-1) { + iap->ia_gid = make_kgid(nfsd_user_namespace(rqstp), tmp1); + if (gid_valid(iap->ia_gid)) + iap->ia_valid |= ATTR_GID; + } + + tmp1 = be32_to_cpup(p++); + if (tmp1 != (u32)-1) { + iap->ia_valid |= ATTR_SIZE; + iap->ia_size = tmp1; + } + + tmp1 = be32_to_cpup(p++); + tmp2 = be32_to_cpup(p++); + if (tmp1 != (u32)-1 && tmp2 != (u32)-1) { + iap->ia_valid |= ATTR_ATIME | ATTR_ATIME_SET; + iap->ia_atime.tv_sec = tmp1; + iap->ia_atime.tv_nsec = tmp2 * NSEC_PER_USEC; + } + + tmp1 = be32_to_cpup(p++); + tmp2 = be32_to_cpup(p++); + if (tmp1 != (u32)-1 && tmp2 != (u32)-1) { + iap->ia_valid |= ATTR_MTIME | ATTR_MTIME_SET; + iap->ia_mtime.tv_sec = tmp1; + iap->ia_mtime.tv_nsec = tmp2 * NSEC_PER_USEC; + /* + * Passing the invalid value useconds=1000000 for mtime + * is a Sun convention for "set both mtime and atime to + * current server time". It's needed to make permissions + * checks for the "touch" program across v2 mounts to + * Solaris and Irix boxes work correctly. See description of + * sattr in section 6.1 of "NFS Illustrated" by + * Brent Callaghan, Addison-Wesley, ISBN 0-201-32750-5 + */ + if (tmp2 == 1000000) + iap->ia_valid &= ~(ATTR_ATIME_SET|ATTR_MTIME_SET); + } + + return XDR_DECODE_DONE; +} + static __be32 * encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp, struct kstat *stat) @@ -254,14 +327,12 @@ nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_sattrargs *args = rqstp->rq_argp; - p = decode_fh(p, &args->fh); - if (!p) - return 0; - p = decode_sattr(p, &args->attrs, nfsd_user_namespace(rqstp)); - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_fhandle(xdr, &args->fh)) + return XDR_DECODE_FAILED; + return svcxdr_decode_sattr(rqstp, xdr, &args->attrs); } int From patchwork Fri Nov 20 20:43:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922525 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8C091C2D0E4 for ; Fri, 20 Nov 2020 20:43:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2E06B2223F for ; Fri, 20 Nov 2020 20:43:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ThGSQdMo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731735AbgKTUnS (ORCPT ); Fri, 20 Nov 2020 15:43:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34064 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728928AbgKTUnS (ORCPT ); Fri, 20 Nov 2020 15:43:18 -0500 Received: from mail-qt1-x843.google.com (mail-qt1-x843.google.com [IPv6:2607:f8b0:4864:20::843]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21558C0613CF for ; Fri, 20 Nov 2020 12:43:18 -0800 (PST) Received: by mail-qt1-x843.google.com with SMTP id z24so6110825qto.3 for ; Fri, 20 Nov 2020 12:43:18 -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=7msy/n0JKvli6W7JM3p6GkoxmcF+GlMP4FBJdOeBya8=; b=ThGSQdMoLVXWyJK/zLW8bqAbqXrz73BoylktVL0cVkD1bB8LH9cm0xTcmalYeU1+ih BsiBzwO0kVCEdnbyfu/HrySTp6EBAfXldFbeQuHsUYUYNSOh+o45950wey89kJtuto74 9zwK8XpcYgGDk+G4COUPdOuIKCQwMgYPWi4oEDWjcIon1g1yoYlQxd1vt7cIQht1Am/0 Wve5g9oRdoHY16xlF+jKVp/n7J75aPYWw1kimgtX5fcwkp0+qEGTlG6YRRMPOIwmdl2q 37/qOCszDzJbpg9gWjG0LKo1+2FXP1dOh+nJmLcnRGfhgyMdyNTRbCpeqzUhpcnGMXt2 LwgA== 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=7msy/n0JKvli6W7JM3p6GkoxmcF+GlMP4FBJdOeBya8=; b=dskuDMpjRsGfVUBGGwx2qvqQF6L0ujUTTs1HDlP8pwnnqMxW8KtuQYp42i8HFsbI/H if+ouPT2sRPW4SPj/SIU8ONpc/UL35HLrOiAtIXNmBFSQafdSu1CxoAaKHYakbAErOr5 OJRRuJidgvyAQtm+5LBB8jV294C32xn0uU951eQo8/BvEHVPuLk5g4zV27brOBMV5anh 6MfSiRX3elUNtqyuZ4qvbFyjoqWGKnpcEwEnvjcm75/1KmLEuuR6p4RAgRclWh8bf8Qy 5D0QbMtPjqntyxXjO8qMe/67etnWQqWZ6+zLdAWle4RZTLYXJxTPQ+mqAiiwRYMlX+HG H6/w== X-Gm-Message-State: AOAM530UJhy+7v2m2/0Dy7lxNQGoSaGY2bz0E1dssSoBMkwuPXsGZaSC 3X5biQy70Fz52GQJQRkXFMruuLq9CKc= X-Google-Smtp-Source: ABdhPJxeIBbmEA53f/Xqxcy2N3syHNTq0GGz4Mrjaa9+JEzvMhJCun1bCctQbz2yStU0UsRRrm4OUg== X-Received: by 2002:ac8:4a01:: with SMTP id x1mr17441990qtq.276.1605904997070; Fri, 20 Nov 2020 12:43:17 -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 v14sm2852189qkb.15.2020.11.20.12.43.16 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:16 -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 0AKKhFQe029535 for ; Fri, 20 Nov 2020 20:43:15 GMT Subject: [PATCH v2 107/118] NFSD: Update the NFSv2 CREATE argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:15 -0500 Message-ID: <160590499559.1340.7433767896526228380.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index c34446c650ca..f02fef8a805e 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -397,14 +397,12 @@ nfssvc_decode_writeargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_createargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_createargs *args = rqstp->rq_argp; - if ( !(p = decode_fh(p, &args->fh)) - || !(p = decode_filename(p, &args->name, &args->len))) - return 0; - p = decode_sattr(p, &args->attrs, nfsd_user_namespace(rqstp)); - - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_diropargs(xdr, &args->fh, &args->name, &args->len)) + return XDR_DECODE_FAILED; + return svcxdr_decode_sattr(rqstp, xdr, &args->attrs); } int From patchwork Fri Nov 20 20:43:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922531 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0495BC63777 for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A560D2223F for ; Fri, 20 Nov 2020 20:43:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JqxRQIo7" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728726AbgKTUnY (ORCPT ); Fri, 20 Nov 2020 15:43:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34082 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728650AbgKTUnX (ORCPT ); Fri, 20 Nov 2020 15:43:23 -0500 Received: from mail-qv1-xf44.google.com (mail-qv1-xf44.google.com [IPv6:2607:f8b0:4864:20::f44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 86FCFC0613CF for ; Fri, 20 Nov 2020 12:43:23 -0800 (PST) Received: by mail-qv1-xf44.google.com with SMTP id q7so5295150qvt.12 for ; Fri, 20 Nov 2020 12:43:23 -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=yLKnZwV6Re27aAJJTmXp1NA4VAz4wTFtjy78xbEasX8=; b=JqxRQIo7X/siaysGbLD0L/UW+02yvQNOuAPQ9kKkgC+2jpzd6kXXK1ndUbEN+m+yE5 uL2L1g5d/xw8t3b/V802UnUsktH+ZIB1c7b2EVtfWpVJZjF5myYBMM0wQy3RKatrp7xi 2TsK2WD7o/IL9j8ma+gWNBXkgrcE9orgc9VslHBWak4r5PSKQdIg4FCk5AJgcwKQHTb/ v2aHRyBXBmbLVYkBSInSVxTilAXS/DeavmqNaCX701Gu+MoDNEPOMdv1b+FtwsJENE+C HH8QGLvFuG2yTOK8nQ6RNJ1LMstuob3uvs+gg8V5YuobIP/DA5xtTyBrmwF3t3QGwUfD 6hTw== 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=yLKnZwV6Re27aAJJTmXp1NA4VAz4wTFtjy78xbEasX8=; b=m7F08cW6qP5k6+GmXwZDIjpS0kydD/7NIQRdkvxYHsjppW2cAAMg8aRo2mx+Umuak6 x+X15ct600DsLxkoEDjOtFPRMJv5zPvMplSEbfA5I1gD2maCgtNxneNFR+t5t4c7feL+ 5jzz01kdzTwVMNxr+PopU2w+G/RIYsGeMWy5OaGSIm0ctyj6t6u91+mWfCy2UB6duyHy ud5Au4W3NL1n0BmZ8gyo+D2KXC/5uEnsq5QEhnVvU0UH69UbdQd9Dqw7nJzSjupx1A6I 4CMF5/g3Y2SUBsyXDRG7OAc8nPRX8oA8tPTe8lK9Dl0t45HcR519Il+XGHu9eBsAR59R p17g== X-Gm-Message-State: AOAM532a9/dV1Rcf7vIf39iujekoXiHKE04BtBcIK7MPQdixI5thBWwk AFRYnW7xvbKP+/AlVuqfhhhzTRT7VyY= X-Google-Smtp-Source: ABdhPJwVG31QmUCpuSFEYLWIOdS4dyv2qAK+XdorArmgiLAaA0632EKWG1ZkR0fD1ioCcBYX5TivzQ== X-Received: by 2002:a05:6214:9a5:: with SMTP id du5mr16561052qvb.56.1605905002377; Fri, 20 Nov 2020 12:43:22 -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 o21sm2985055qko.9.2020.11.20.12.43.21 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:21 -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 0AKKhKPm029538 for ; Fri, 20 Nov 2020 20:43:20 GMT Subject: [PATCH v2 108/118] NFSD: Update the NFSv2 SYMLINK argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:20 -0500 Message-ID: <160590500071.1340.3076531536590397193.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 117 ++++++------------------------------------------------ 1 file changed, 12 insertions(+), 105 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index f02fef8a805e..92e9143842d3 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -66,26 +66,6 @@ encode_fh(__be32 *p, struct svc_fh *fhp) return p + (NFS_FHSIZE>> 2); } -/* - * Decode a file name and make sure that the path contains - * no slashes or null bytes. - */ -static __be32 * -decode_filename(__be32 *p, char **namp, unsigned int *lenp) -{ - char *name; - unsigned int i; - - if ((p = xdr_decode_string_inplace(p, namp, lenp, NFS_MAXNAMLEN)) != NULL) { - for (i = 0, name = *namp; i < *lenp; i++, name++) { - if (*name == '\0' || *name == '/') - return NULL; - } - } - - return p; -} - static enum xdr_decode_result svcxdr_decode_filename(struct xdr_stream *xdr, char **name, unsigned int *len) { @@ -119,61 +99,6 @@ svcxdr_decode_diropargs(struct xdr_stream *xdr, struct svc_fh *fhp, return svcxdr_decode_filename(xdr, name, len); } -static __be32 * -decode_sattr(__be32 *p, struct iattr *iap, struct user_namespace *userns) -{ - u32 tmp, tmp1; - - iap->ia_valid = 0; - - /* Sun client bug compatibility check: some sun clients seem to - * put 0xffff in the mode field when they mean 0xffffffff. - * Quoting the 4.4BSD nfs server code: Nah nah nah nah na nah. - */ - if ((tmp = ntohl(*p++)) != (u32)-1 && tmp != 0xffff) { - iap->ia_valid |= ATTR_MODE; - iap->ia_mode = tmp; - } - if ((tmp = ntohl(*p++)) != (u32)-1) { - iap->ia_uid = make_kuid(userns, tmp); - if (uid_valid(iap->ia_uid)) - iap->ia_valid |= ATTR_UID; - } - if ((tmp = ntohl(*p++)) != (u32)-1) { - iap->ia_gid = make_kgid(userns, tmp); - if (gid_valid(iap->ia_gid)) - iap->ia_valid |= ATTR_GID; - } - if ((tmp = ntohl(*p++)) != (u32)-1) { - iap->ia_valid |= ATTR_SIZE; - iap->ia_size = tmp; - } - tmp = ntohl(*p++); tmp1 = ntohl(*p++); - if (tmp != (u32)-1 && tmp1 != (u32)-1) { - iap->ia_valid |= ATTR_ATIME | ATTR_ATIME_SET; - iap->ia_atime.tv_sec = tmp; - iap->ia_atime.tv_nsec = tmp1 * 1000; - } - tmp = ntohl(*p++); tmp1 = ntohl(*p++); - if (tmp != (u32)-1 && tmp1 != (u32)-1) { - iap->ia_valid |= ATTR_MTIME | ATTR_MTIME_SET; - iap->ia_mtime.tv_sec = tmp; - iap->ia_mtime.tv_nsec = tmp1 * 1000; - /* - * Passing the invalid value useconds=1000000 for mtime - * is a Sun convention for "set both mtime and atime to - * current server time". It's needed to make permissions - * checks for the "touch" program across v2 mounts to - * Solaris and Irix boxes work correctly. See description of - * sattr in section 6.1 of "NFS Illustrated" by - * Brent Callaghan, Addison-Wesley, ISBN 0-201-32750-5 - */ - if (tmp1 == 1000000) - iap->ia_valid &= ~(ATTR_ATIME_SET|ATTR_MTIME_SET); - } - return p; -} - static enum xdr_decode_result svcxdr_decode_sattr(struct svc_rqst *rqstp, struct xdr_stream *xdr, struct iattr *iap) @@ -430,40 +355,22 @@ nfssvc_decode_linkargs(struct svc_rqst *rqstp, __be32 *p) int nfssvc_decode_symlinkargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd_symlinkargs *args = rqstp->rq_argp; - char *base = (char *)p; - size_t xdrlen; - - if ( !(p = decode_fh(p, &args->ffh)) - || !(p = decode_filename(p, &args->fname, &args->flen))) - return 0; + struct kvec *head = rqstp->rq_arg.head; - args->tlen = ntohl(*p++); + if (!svcxdr_decode_diropargs(xdr, &args->ffh, &args->fname, &args->flen)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->tlen) < 0) + return XDR_DECODE_FAILED; if (args->tlen == 0) - return 0; - - args->first.iov_base = p; - args->first.iov_len = rqstp->rq_arg.head[0].iov_len; - args->first.iov_len -= (char *)p - base; - - /* This request is never larger than a page. Therefore, - * transport will deliver either: - * 1. pathname in the pagelist -> sattr is in the tail. - * 2. everything in the head buffer -> sattr is in the head. - */ - if (rqstp->rq_arg.page_len) { - if (args->tlen != rqstp->rq_arg.page_len) - return 0; - p = rqstp->rq_arg.tail[0].iov_base; - } else { - xdrlen = XDR_QUADLEN(args->tlen); - if (xdrlen > args->first.iov_len - (8 * sizeof(__be32))) - return 0; - p += xdrlen; - } - decode_sattr(p, &args->attrs, nfsd_user_namespace(rqstp)); + return XDR_DECODE_FAILED; - return 1; + args->first.iov_len = head->iov_len - xdr_stream_pos(xdr); + args->first.iov_base = xdr_inline_decode(xdr, args->tlen); + if (!args->first.iov_base) + return XDR_DECODE_FAILED; + return svcxdr_decode_sattr(rqstp, xdr, &args->attrs); } int From patchwork Fri Nov 20 20:43:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922529 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 494C9C63798 for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DCB8922D0A for ; Fri, 20 Nov 2020 20:43:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dte7G3Gs" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728897AbgKTUnb (ORCPT ); Fri, 20 Nov 2020 15:43:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728476AbgKTUna (ORCPT ); Fri, 20 Nov 2020 15:43:30 -0500 Received: from mail-qv1-xf41.google.com (mail-qv1-xf41.google.com [IPv6:2607:f8b0:4864:20::f41]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5816C0613CF for ; Fri, 20 Nov 2020 12:43:28 -0800 (PST) Received: by mail-qv1-xf41.google.com with SMTP id x13so5314095qvk.8 for ; Fri, 20 Nov 2020 12:43:28 -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=zuWdv2Z/lVn8bz+jc6R0bamEX8fh2I8FV0vOWuV6Bto=; b=dte7G3GsAFRUiPyf5tw118Gd3lzEhkpQKUx5YtkGHULan94qCua6na8IBy4TAC4u9V NV3XBWv0LXkfe7H8N8WIUDcpDEchr0IV0/NSLHw92V0HPsLFyIsK6aVc2rNC7rkj1NBu 4q6IwmHSlRuz/GacsxcsoB07XmMjrMWbISB9zjFKbzIPN7eKLbCip0QYfSdiE//6IkMb YJhfMvlECjrgXTwtb71k33SyCxN1ncVVNbdDEcxyCB1Wk+GWnrGRfQKcPuMl5F7cNiRE YfygSRPWvAQzqE3BbcU+TNipWxLmASBKZfKwrgL79QM1MsbqVTsfIHGy4gZmEPzWyzna o3Pw== 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=zuWdv2Z/lVn8bz+jc6R0bamEX8fh2I8FV0vOWuV6Bto=; b=Nyr0YQ1ywaQXdnvC2/E8mnm/Gs1qiWp/w8pdh2/YmRs6iuEtGkFlYrv009vmVfoZYm IQn+7HgyA3dtm8b767DCE6ax7qnBOGm0bIPhRFyWO3J+ZmKkT/qrW0KXEr4C5v8CetZL KSlCXH2sPv8UdvEgLgBQTjh+UiO7X/Jz6U0dPRSs8eJag/hQXTF6t+hVKwl7yL8hQWhB vBsFKx6sxTXZ/zzCyJM885tWNmbeH3NjlCi4ouH6Eq7BiyKNpOVq52D2F2Q1t+tpokrP nd7ERwUooTFAPX2EWKBB9JHr6O07sbHfk5cstySOLpq2iJrpwC8MB5guqUbuilrz763U TZJw== X-Gm-Message-State: AOAM5303Egs0QAeug6pg4rJMOYPmohqa30sTZgou0I4gphz4VG/VrsEi 3qid8wATkgqfqxdjWOaxZD0+Ugy+k94= X-Google-Smtp-Source: ABdhPJy/E7z4nqy75mRoLzLI9h12xRm5xjoHRo/XHaVIr1IYfPBUMrqKsYvuRIvyuGttxv/rbAUVjA== X-Received: by 2002:a05:6214:6a2:: with SMTP id s2mr18197023qvz.58.1605905007684; Fri, 20 Nov 2020 12:43:27 -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 c1sm2796475qkd.74.2020.11.20.12.43.26 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:27 -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 0AKKhQVo029541 for ; Fri, 20 Nov 2020 20:43:26 GMT Subject: [PATCH v2 109/118] NFSD: Remove argument length checking in nfsd_dispatch() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:26 -0500 Message-ID: <160590500604.1340.6630770609567437600.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Now that the decoders for NFSv2, NFSv3, and NFSACL all use the xdr_stream mechanism, the special length checking logic in nfsd_dispatch() is no longer necessary. Signed-off-by: Chuck Lever --- fs/nfsd/nfssvc.c | 39 --------------------------------------- 1 file changed, 39 deletions(-) diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index cae6fbf10514..c51287de9a8d 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c @@ -961,37 +961,6 @@ nfsd(void *vrqstp) return 0; } -/* - * A write procedure can have a large argument, and a read procedure can - * have a large reply, but no NFSv2 or NFSv3 procedure has argument and - * reply that can both be larger than a page. The xdr code has taken - * advantage of this assumption to be a sloppy about bounds checking in - * some cases. Pending a rewrite of the NFSv2/v3 xdr code to fix that - * problem, we enforce these assumptions here: - */ -static bool nfs_request_too_big(struct svc_rqst *rqstp, - const struct svc_procedure *proc) -{ - /* - * The ACL code has more careful bounds-checking and is not - * susceptible to this problem: - */ - if (rqstp->rq_prog != NFS_PROGRAM) - return false; - /* - * Ditto NFSv4 (which can in theory have argument and reply both - * more than a page): - */ - if (rqstp->rq_vers >= 4) - return false; - /* The reply will be small, we're OK: */ - if (proc->pc_xdrressize > 0 && - proc->pc_xdrressize < XDR_QUADLEN(PAGE_SIZE)) - return false; - - return rqstp->rq_arg.len > PAGE_SIZE; -} - /** * nfsd_dispatch - Process an NFS or NFSACL Request * @rqstp: incoming request @@ -1013,9 +982,6 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) dprintk("nfsd_dispatch: vers %d proc %d\n", rqstp->rq_vers, rqstp->rq_proc); - if (nfs_request_too_big(rqstp, proc)) - goto out_too_large; - /* * Give the xdr decoder a chance to change this if it wants * (necessary in the NFSv4.0 compound case) @@ -1053,11 +1019,6 @@ int nfsd_dispatch(struct svc_rqst *rqstp, __be32 *statp) out_cached_reply: return 1; -out_too_large: - dprintk("nfsd: NFSv%d argument too large\n", rqstp->rq_vers); - *statp = rpc_garbage_args; - return 1; - out_decode_err: dprintk("nfsd: failed to decode arguments!\n"); *statp = rpc_garbage_args; From patchwork Fri Nov 20 20:43:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922527 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 76864C6379D for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2F9A42223F for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KddNm1Lg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728781AbgKTUne (ORCPT ); Fri, 20 Nov 2020 15:43:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728476AbgKTUne (ORCPT ); Fri, 20 Nov 2020 15:43:34 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2017CC0613CF for ; Fri, 20 Nov 2020 12:43:34 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id k4so10184407qko.13 for ; Fri, 20 Nov 2020 12:43:34 -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=DryE8JqL2omDj0I6iyrs9atF/pf66DBI88wfAvtzJl8=; b=KddNm1LgPVWMLYAkrQav2kUTkO5b4w12Ac3z1PfSALYWtY7EEOV6kAQcPhMSxO1WW8 ZtuZAmbfM/uBFwhNl7sjVMlSvbW2bv38ze9GZQPfQS1B092rLkAgfgLtnfEFkKkOrtEU UEMvmZ7ip1J0fE/38S2hEuL30tJdqAVAJPtE3PZlQr9lIkIrBNcO6tjF3JrSyDaH5TJ5 O//qvzGfhIAtWIUALyhvgbQMaoA9EqzjrZFqqN6Zw5LzG4LMrtV2L2TzV1BT8Ta+OW7k cjrzSUvR+UPKwIVybsBbWrPh4yEkSGmTk5xVy3kw6fqvgw4y9sYaEt6Fw+Y05shFQqYO +kOQ== 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=DryE8JqL2omDj0I6iyrs9atF/pf66DBI88wfAvtzJl8=; b=YyFXDbRH/jggxY+Z0DmC/JqzgNP67CfJsMSxTyMiWBfJsHxNuky9j20IQwZRJ6AR+h VuHVXTtCps6W+d8E0hGlvdj0H2lk4WZraebzO2Q/JoZZB+XnKhGhYUcekxAXmbx64nwh X24nT01fz5j0d1GaJKthbg2HKhL/iJtUVdLTTV77ZwziHWsQZUi80dyQz6m636w/sq33 b5IPCGRds4pVAAj+5YGl+abP+l6IVG/gxeibm/LDbnSAppyQSJ7yfblvnVo4gfJCPGig t6OdlQPM2NIu3Vk0RRekE+7fyC34QyxbqVJuSnaPtpOY7W3ZcSsyY6l+DwMj0Lt5B87r wHjg== X-Gm-Message-State: AOAM532D6rNgL/Qt3KaCDHyYrETyRkttXSufEfyCOO/2QKRwtJO4nb7s 6h1FGmX+n2AVhIY53G/cZ/0imfoKGyc= X-Google-Smtp-Source: ABdhPJx/cVupKUwnoNDMT076ZSvWmPHp7McZ7iYx21Q+m763zNN5bbIED/xSCiYke2GKaBrZadcbXg== X-Received: by 2002:a37:78c:: with SMTP id 134mr18948371qkh.359.1605905013058; Fri, 20 Nov 2020 12:43:33 -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 r190sm2623539qkf.101.2020.11.20.12.43.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:32 -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 0AKKhVba029544 for ; Fri, 20 Nov 2020 20:43:31 GMT Subject: [PATCH v2 110/118] NFSD: Update the NFSv2 GETACL argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:31 -0500 Message-ID: <160590501137.1340.10261024050275031553.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs2acl.c | 12 ++++++------ fs/nfsd/nfsxdr.c | 11 ++++++++++- fs/nfsd/xdr.h | 2 ++ fs/nfsd/xdr3.h | 2 +- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index b0f66604532a..0e62c3b53a58 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c @@ -188,17 +188,17 @@ static __be32 nfsacld_proc_access(struct svc_rqst *rqstp) static int nfsaclsvc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_getaclargs *argp = rqstp->rq_argp; - p = nfs2svc_decode_fh(p, &argp->fh); - if (!p) - return 0; - argp->mask = ntohl(*p); p++; + if (!svcxdr_decode_fhandle(xdr, &argp->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &argp->mask) < 0) + return XDR_DECODE_FAILED; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } - static int nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_setaclargs *argp = rqstp->rq_argp; diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index 92e9143842d3..efa2760316eb 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -38,7 +38,16 @@ decode_fh(__be32 *p, struct svc_fh *fhp) return p + (NFS_FHSIZE >> 2); } -static enum xdr_decode_result +/** + * svcxdr_decode_fhandle - Decode an NFSv2 file handle + * @xdr: XDR stream positioned at an encoded NFSv2 FH + * @fhp: OUT: filled-in server file handle + * + * Return values: + * %XDR_DECODE_FAILED: The encoded file handle was not valid + * %XDR_DECODE_DONE: Success + */ +enum xdr_decode_result svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp) { __be32 *p; diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index d700838f6512..6d3fb133f366 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -165,5 +165,7 @@ void nfssvc_release_readres(struct svc_rqst *rqstp); /* Helper functions for NFSv2 ACL code */ __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp, struct kstat *stat); __be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp); +enum xdr_decode_result +svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp); #endif /* LINUX_NFSD_H */ diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 64af5b01c5d7..43db4206cd25 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -102,7 +102,7 @@ struct nfsd3_commitargs { struct nfsd3_getaclargs { struct svc_fh fh; - int mask; + __u32 mask; }; struct posix_acl; From patchwork Fri Nov 20 20:43:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922533 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4297C64E69 for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6371B22D0A for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dxulIbCT" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729054AbgKTUnk (ORCPT ); Fri, 20 Nov 2020 15:43:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34128 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728891AbgKTUnj (ORCPT ); Fri, 20 Nov 2020 15:43:39 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8905FC0613CF for ; Fri, 20 Nov 2020 12:43:39 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id i12so8151274qtj.0 for ; Fri, 20 Nov 2020 12:43:39 -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=0muUFbr51AcV9lsONUVhq8M7yIVUAZabR0JRQBIklPQ=; b=dxulIbCTzOMY+4kRaYrfaZRWbSauxPdEMB0j1kPmXTKGoKP4YU/Q3IS7bkf1imHzxw u+rGXac30rDTG1EVg3MXfooV91OFAKifv6yxvoTbyu251ngRuDezNySs8Sab1AwjihYD EpIi6e2F8aEG4B5YUck4ipqRQW05lCXjikq/pIXDBC9JMwFnJ2Nt6nix0VF6+6ZgERl8 FpA+xaAwvOAFKGAbqUWgAIeiMlTjLieUffC5gahIvs8bV2k79cq2KdKBTyHL8j+nLmyq cw7KzUV2dJBgm4X8VBi/Z2YBwF/seEBiqEa4Yj6VZbzVKR9gyBdzgYx34fK+YlIqca/A z/ZQ== 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=0muUFbr51AcV9lsONUVhq8M7yIVUAZabR0JRQBIklPQ=; b=m4Fm1imGItHvpJDlTKghRnJ63f8ljcFhUH6q93R56GumLcQTcSW2WKhH+NnCUWRQeY ETsqZCe3HMtfXBBlKDxhZDsamtWpQxVruHHggbCQIiroxkyS/rSgj3aTIkpIko9ZKVa+ TNB3HpwgnGXcfyexRZK2rxP/EGoZ9BoQ/drudjVV7w6q8KmUMKcayd2ey0/CQN+khGaE yObIUBJqfDoUTdzuos2qcUzCdeW/8RDmUJEq0B9Kh5aVhsnDnaf1FGhSTOiLN8YCjLP+ D0Tw93VBa+7QBj0vAbgsQXnOKDukjyeFMsxkQYQLUkuDrjQkrfXBsDow51DvRXOZjHvl lAIQ== X-Gm-Message-State: AOAM532h8ux+qTcBr6H0zzOGilyViXoGyBlbufzE2ybMa35j6vxMMjaD BW+2KvXcjtRXjOpuAJ/fY4Py/kV+o0c= X-Google-Smtp-Source: ABdhPJzneErqKDfDFhcpjPuzNSnpCVuwScX0DGOqajVSh1RbkzwiSPWKEa7LRjVjvrXjayCj+E234w== X-Received: by 2002:aed:2be3:: with SMTP id e90mr17777669qtd.127.1605905018468; Fri, 20 Nov 2020 12:43:38 -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 f14sm2654912qkk.89.2020.11.20.12.43.37 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:37 -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 0AKKhavW029547 for ; Fri, 20 Nov 2020 20:43:36 GMT Subject: [PATCH v2 111/118] NFSD: Add an xdr_stream-based decoder for NFSv2/3 ACLs From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:36 -0500 Message-ID: <160590501674.1340.17812051346945067469.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfs_common/nfsacl.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ include/linux/nfsacl.h | 3 +++ 2 files changed, 56 insertions(+) diff --git a/fs/nfs_common/nfsacl.c b/fs/nfs_common/nfsacl.c index d056ad2fdefd..e2ec0f241a4f 100644 --- a/fs/nfs_common/nfsacl.c +++ b/fs/nfs_common/nfsacl.c @@ -295,3 +295,56 @@ int nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt, nfsacl_desc.desc.array_len; } EXPORT_SYMBOL_GPL(nfsacl_decode); + +/** + * nfs_stream_decode_acl - Decode an NFSv3 ACL + * + * @xdr: an xdr_stream positioned at an encoded ACL + * @aclcnt: OUT: count of ACEs in decoded posix_acl + * @pacl: OUT: a dynamically-allocated buffer containing the decoded posix_acl + * + * Return values: + * %XDR_DECODE_FAILED: The encoded ACL is not valid + * %XDR_DECODE_DONE: @pacl contains a decoded ACL, and @xdr is advanced + * + * On a successful return, caller must release *pacl using posix_acl_release(). + */ +enum xdr_decode_result +nfs_stream_decode_acl(struct xdr_stream *xdr, unsigned int *aclcnt, + struct posix_acl **pacl) +{ + const size_t elem_size = sizeof(__be32) * 3; + struct nfsacl_decode_desc nfsacl_desc = { + .desc = { + .elem_size = elem_size, + .xcode = pacl ? xdr_nfsace_decode : NULL, + }, + }; + unsigned int base; + u32 entries; + + if (xdr_stream_decode_u32(xdr, &entries) < 0) + return XDR_DECODE_FAILED; + if (entries > NFS_ACL_MAX_ENTRIES) + return XDR_DECODE_FAILED; + + base = xdr_stream_pos(xdr); + if (!xdr_inline_decode(xdr, sizeof(__be32) + elem_size * entries)) + return XDR_DECODE_FAILED; + nfsacl_desc.desc.array_maxlen = entries; + if (xdr_decode_array2(xdr->buf, base, &nfsacl_desc.desc)) + return XDR_DECODE_FAILED; + + if (pacl) { + if (entries != nfsacl_desc.desc.array_len || + posix_acl_from_nfsacl(nfsacl_desc.acl) != 0) { + posix_acl_release(nfsacl_desc.acl); + return XDR_DECODE_FAILED; + } + *pacl = nfsacl_desc.acl; + } + if (aclcnt) + *aclcnt = entries; + return XDR_DECODE_DONE; +} +EXPORT_SYMBOL_GPL(nfs_stream_decode_acl); diff --git a/include/linux/nfsacl.h b/include/linux/nfsacl.h index 103d44695323..434471cc4b62 100644 --- a/include/linux/nfsacl.h +++ b/include/linux/nfsacl.h @@ -38,5 +38,8 @@ nfsacl_encode(struct xdr_buf *buf, unsigned int base, struct inode *inode, extern int nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt, struct posix_acl **pacl); +extern enum xdr_decode_result +nfs_stream_decode_acl(struct xdr_stream *xdr, unsigned int *aclcnt, + struct posix_acl **pacl); #endif /* __LINUX_NFSACL_H */ From patchwork Fri Nov 20 20:43:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922535 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1AF6C6379F for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9FA132223F for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XUMQvxom" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729456AbgKTUnp (ORCPT ); Fri, 20 Nov 2020 15:43:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729306AbgKTUnp (ORCPT ); Fri, 20 Nov 2020 15:43:45 -0500 Received: from mail-qt1-x836.google.com (mail-qt1-x836.google.com [IPv6:2607:f8b0:4864:20::836]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04DA0C0613CF for ; Fri, 20 Nov 2020 12:43:45 -0800 (PST) Received: by mail-qt1-x836.google.com with SMTP id z24so6111712qto.3 for ; Fri, 20 Nov 2020 12:43:44 -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=nEMrv+oXcuXrri8aG4ydWd0UUuh0YoSurn9CYn3jvk8=; b=XUMQvxomGfzoQ0jDGXoNNxxNFFKt40N6ZhMKHFGVbnN9GsY30S+EryGUkPWWnk7lc6 AS0MbjaIaBpcn1rUa1uMqJfINcW3/p3Bfd4Zv09aFwW1UfkADD/qTdfVaF50wdIQuxuN AgTM2YuqAlY4rA/S/2YZiXosal0YP8JHkPdHDVZcFobLDNuljXCoxLiVwV6rrxa2ed/P weoQ1cC4GQ7uykOe0uLnb6FJ8HmWrU2nGGB/5uuL2EzUcQ5g/pRQTu0SiBck7ycDTdTO 9HBjWyIKEVNL1nrSdY/0WrYltkcKQ44I1jsWLtIa3H/EDrKlUqcutRwn1qlBHxtr71J8 HjLA== 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=nEMrv+oXcuXrri8aG4ydWd0UUuh0YoSurn9CYn3jvk8=; b=P4Emx9Xt2WUg/rbADZiKOWjJ+lfK0XvC/penpgRfHqQ13uSC1jRCLlIq6tFWwcc0en ZyBSQRHEf6QDjO3ouSLD+nKF16CpXhRHyoA6ZTdFDm+7YhQHx2Virhq96w1Qp9auDcIA r1fvwSvVNGQI6q0E/lrHiswrYZcj9L6n/T/kbLhJ0hhwveC3u0anEaC+UxyVbRH6BP9s ELFEVorv7xwoA+IJlirT2UheU4dW4+/mS8W1dQMnSIGgfbi0cyhK/R1ZNE6OI+hxO25g nf43K4jSON8IAjSUr2HyPj3S9UDE9qXb5vxwxyjwdGDIWcxQe9vKgQpHHLgvWYrn/N8E 9J+Q== X-Gm-Message-State: AOAM532+Ul4VPBsFfbXKMpqD+Gjg0W9uaWc5LuGAzgngogE8SqxPaM7u Wi2+e+8hc9BUZs4cV6Vg8pRaoHeD0wU= X-Google-Smtp-Source: ABdhPJwkFwBJrbrKMUZ4QNP8s8QW2VfzVZpSe6WOodBaGlREIl0NQPVqDeXFW1YuLpVKZoxiviA/4A== X-Received: by 2002:aed:38c8:: with SMTP id k66mr17692879qte.385.1605905023890; Fri, 20 Nov 2020 12:43:43 -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 w138sm2756665qkb.130.2020.11.20.12.43.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:43 -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 0AKKhghF029550 for ; Fri, 20 Nov 2020 20:43:42 GMT Subject: [PATCH v2 112/118] NFSD: Update the NFSv2 SETACL argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:42 -0500 Message-ID: <160590502218.1340.856421484434409408.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs2acl.c | 33 ++++++++++++++------------------- fs/nfsd/xdr3.h | 2 +- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index 0e62c3b53a58..2e44b56e33ad 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c @@ -201,28 +201,23 @@ static int nfsaclsvc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) static int nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_setaclargs *argp = rqstp->rq_argp; - struct kvec *head = rqstp->rq_arg.head; - unsigned int base; - int n; - p = nfs2svc_decode_fh(p, &argp->fh); - if (!p) - return 0; - argp->mask = ntohl(*p++); - if (argp->mask & ~NFS_ACL_MASK || - !xdr_argsize_check(rqstp, p)) - return 0; + if (!svcxdr_decode_fhandle(xdr, &argp->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &argp->mask) < 0) + return XDR_DECODE_FAILED; + if (argp->mask & ~NFS_ACL_MASK) + return XDR_DECODE_FAILED; + if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_ACL) ? + &argp->acl_access : NULL)) + return XDR_DECODE_FAILED; + if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_DFACL) ? + &argp->acl_default : NULL)) + return XDR_DECODE_FAILED; - base = (char *)p - (char *)head->iov_base; - n = nfsacl_decode(&rqstp->rq_arg, base, NULL, - (argp->mask & NFS_ACL) ? - &argp->acl_access : NULL); - if (n > 0) - n = nfsacl_decode(&rqstp->rq_arg, base + n, NULL, - (argp->mask & NFS_DFACL) ? - &argp->acl_default : NULL); - return (n > 0); + return XDR_DECODE_DONE; } static int nfsaclsvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 43db4206cd25..5afb3ce4f062 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -108,7 +108,7 @@ struct nfsd3_getaclargs { struct posix_acl; struct nfsd3_setaclargs { struct svc_fh fh; - int mask; + __u32 mask; struct posix_acl *acl_access; struct posix_acl *acl_default; }; From patchwork Fri Nov 20 20:43:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922539 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3DEE4C64E75 for ; Fri, 20 Nov 2020 20:44:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D485D22D0A for ; Fri, 20 Nov 2020 20:44:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mGzffmBU" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729519AbgKTUnv (ORCPT ); Fri, 20 Nov 2020 15:43:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729306AbgKTUnu (ORCPT ); Fri, 20 Nov 2020 15:43:50 -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 80DF3C0613CF for ; Fri, 20 Nov 2020 12:43:50 -0800 (PST) Received: by mail-qk1-x742.google.com with SMTP id k4so10185173qko.13 for ; Fri, 20 Nov 2020 12:43:50 -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=eVTye5HyUNzpAddxFydTGaBmTZSEbiKT2LU4PvE5LZg=; b=mGzffmBUXtNStWmukTvXZ+9U7KSTTDk71u3bYs6+g5AwrapqBIg3xQ/CXTSCPUjGlN 7lSsKbqQQ8P8Hi2eiHJepxAWj9ZBLxu/f9NUwNI3ev+ZllEJNSpBe658aiR4C6OuzIGO Sy9Nrjrs+q5XTQYeI8tMjvqOA6fCSuHtm5r55E5I0nZV90OxyDB6MNgByY/Vr0FmGFhi 220hjiRtkD5zaYswcIW4FNLO7f46oKOPgjsHeWdY/95tt21IhyFNXCQfY5RwiRclIC73 LAKjulkbjq6q9psq24jkxVZBEbj56X6QJpWTc0ca2p+w4HUc9r2BbTQZJ0dc6OlHEgqi Jyjg== 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=eVTye5HyUNzpAddxFydTGaBmTZSEbiKT2LU4PvE5LZg=; b=irm8C9n8/RpG/HELjPmRPDQtjTZSHrt2MVr7b0tQKCI2nBb9gvZaFw9kmLll9TUcwl qYZG0OPDIbe+6jxyrW/VMqpVdQDyVIB0O7v37yA+bGpLd5GtAOCEzzx9uLJbAv4RKEjj NKEG+07WrTIX+lPMDWQ2I/OhppdG5zQRU7E1KJRPyDHapr4kxb5fN6Ee8S/0Yy1mkhhX XPjGxgRkEWZBy4dgZ+Jt+d11fXcPtfbIVYTfJfb9eDB1rqVcs1SalyBhDt0yuqOcPmnO bC/EC21GYdq/fjRLPaYZ0u73IDTO3x59tm07YtWNmrpkfS1LrNxOdzzDRQW8hrSbyVsY qqbw== X-Gm-Message-State: AOAM530YQnKfG8/tlRdcywSx5TQ+o7UX40pRWqstoIkrQR3W7hLGTB30 onQPaw2rgCKsRbLFC6vYQzD0Nh/0yD0= X-Google-Smtp-Source: ABdhPJypOZOcAieY7ip/kpHQ2WB5g+eofOfYdlFbyQLR3TXfISwoFy6zAJWrUoRsYpuXZVKEQ/dv5A== X-Received: by 2002:ae9:f40d:: with SMTP id y13mr2745214qkl.124.1605905029467; Fri, 20 Nov 2020 12:43:49 -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 v14sm2853317qkb.15.2020.11.20.12.43.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:48 -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 0AKKhlcD029553 for ; Fri, 20 Nov 2020 20:43:47 GMT Subject: [PATCH v2 113/118] NFSD: Update the NFSv2 ACL GETATTR argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:47 -0500 Message-ID: <160590502759.1340.15213412028314306507.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Since the ACL GETATTR procedure is the same as the normal GETATTR procedure, simply re-use nfssvc_decode_fhandleargs. Signed-off-by: Chuck Lever --- fs/nfsd/nfs2acl.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index 2e44b56e33ad..bc5303f654e5 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c @@ -220,16 +220,6 @@ static int nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) return XDR_DECODE_DONE; } -static int nfsaclsvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p) -{ - struct nfsd_fhandle *argp = rqstp->rq_argp; - - p = nfs2svc_decode_fh(p, &argp->fh); - if (!p) - return 0; - return xdr_argsize_check(rqstp, p); -} - static int nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_accessargs *argp = rqstp->rq_argp; @@ -389,7 +379,7 @@ static const struct svc_procedure nfsd_acl_procedures2[5] = { }, [ACLPROC2_GETATTR] = { .pc_func = nfsacld_proc_getattr, - .pc_decode = nfsaclsvc_decode_fhandleargs, + .pc_decode = nfssvc_decode_fhandleargs, .pc_encode = nfsaclsvc_encode_attrstatres, .pc_release = nfsaclsvc_release_attrstat, .pc_argsize = sizeof(struct nfsd_fhandle), From patchwork Fri Nov 20 20:43:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922537 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F147C64E7B for ; Fri, 20 Nov 2020 20:44:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1C0D52223F for ; Fri, 20 Nov 2020 20:44:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JkT6La3o" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729608AbgKTUn5 (ORCPT ); Fri, 20 Nov 2020 15:43:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34174 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729306AbgKTUn5 (ORCPT ); Fri, 20 Nov 2020 15:43:57 -0500 Received: from mail-qk1-x743.google.com (mail-qk1-x743.google.com [IPv6:2607:f8b0:4864:20::743]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DF95BC0613CF for ; Fri, 20 Nov 2020 12:43:55 -0800 (PST) Received: by mail-qk1-x743.google.com with SMTP id n132so10263449qke.1 for ; Fri, 20 Nov 2020 12:43:55 -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=jPE4amyDK4g2Ujqay2CvxQr6Ju06D5HBawt7WO41Waw=; b=JkT6La3oCSqsB6kNU+/CuSSEK8Wzo77JSMjCmWsmJ/CkTmplhh56YhhC1GZQ6+lwY1 ZHmOi388GCFyL8MB+3YBLr9LfecKWV2mSHnCRyq42RZ/imQUSs6wAQfn3AC0v7dLiZI8 o1XJ6TVA1XZfpcJAobBjbDwjW1FcyUIeUgrTh1XwC8wYjrYfyjErshJn82843KCg3t7Z vwTaTlVbAJbqcAcOsEnIoqKVoUF7yjxd4ZJN2fwsA1rmm5v8BRtebfvIj5q89Duzs8Ze UbShBXTiZ7BPy/vuCJ+D2Me+j2IDcVzwRF7y4pZCeetkYYPLWyT0RQ9AI8KIfSiwOqTc 3n1Q== 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=jPE4amyDK4g2Ujqay2CvxQr6Ju06D5HBawt7WO41Waw=; b=tJw/n+eeUxECcCuWGWfmFUbeTr+vIfCqbvXEhjkz1aI8EXDAFQyZaNwE7euzYZLp4Q u+Iwyl0dlApnKrwOr3KbfzCmkFd0bE0DbhZL7vbWANmMNz1UCUts9YJu050en+/DQYqv 7FhIQJKruj4v0/vdb01+I1V7VU5VuvalXOYQUDPymxRCRXs5KlGvbNhoH8/ankzaXwOQ yvQ4nmCVDAq1Vimc/XJN2CXLXPBC8R6SL14mqdFY5OJNYk7+bNHqVm3r8knkwTVgGFtL Y9E1XcWaumWQXvSu7L3sVECj348qQ4ZePC9jZJJuh+fKiaTfLu/hCzkAPObi88uScm2+ B51w== X-Gm-Message-State: AOAM533sT9Ansk4TtggRSdn0p7gfMxqS88FCdm7T+ZDLbHvRXO9xkW7I Il1AW3VPaMmDpyXBoIR5BhjZFQjyjUU= X-Google-Smtp-Source: ABdhPJxaDm7Jtzj/wzfbQQXefsHIsWQmN8glXAQkgAd8OH6kqLZ3QWr/RKcthZRYhBZa+0mvtamnng== X-Received: by 2002:a05:620a:11b7:: with SMTP id c23mr15744723qkk.156.1605905034855; Fri, 20 Nov 2020 12:43:54 -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 205sm2877851qki.50.2020.11.20.12.43.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:54 -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 0AKKhr9Q029556 for ; Fri, 20 Nov 2020 20:43:53 GMT Subject: [PATCH v2 114/118] NFSD: Update the NFSv2 ACL ACCESS argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:53 -0500 Message-ID: <160590503308.1340.3406027763771152476.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs2acl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c index bc5303f654e5..fa8c2d746df2 100644 --- a/fs/nfsd/nfs2acl.c +++ b/fs/nfsd/nfs2acl.c @@ -222,14 +222,14 @@ static int nfsaclsvc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) static int nfsaclsvc_decode_accessargs(struct svc_rqst *rqstp, __be32 *p) { - struct nfsd3_accessargs *argp = rqstp->rq_argp; - - p = nfs2svc_decode_fh(p, &argp->fh); - if (!p) - return 0; - argp->access = ntohl(*p++); + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; + struct nfsd3_accessargs *args = rqstp->rq_argp; - return xdr_argsize_check(rqstp, p); + if (!svcxdr_decode_fhandle(xdr, &args->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->access) < 0) + return XDR_DECODE_FAILED; + return XDR_DECODE_DONE; } /* From patchwork Fri Nov 20 20:43:58 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922541 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7650C56202 for ; Fri, 20 Nov 2020 20:44:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4CD4722D0A for ; Fri, 20 Nov 2020 20:44:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PqfJISTf" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729922AbgKTUoB (ORCPT ); Fri, 20 Nov 2020 15:44:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729685AbgKTUoB (ORCPT ); Fri, 20 Nov 2020 15:44:01 -0500 Received: from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com [IPv6:2607:f8b0:4864:20::f2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 59470C0613CF for ; Fri, 20 Nov 2020 12:44:01 -0800 (PST) Received: by mail-qv1-xf2b.google.com with SMTP id a15so5328489qvk.5 for ; Fri, 20 Nov 2020 12:44:01 -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=666AyFq1D9qQYerIxAMAAzfbK+WmtUzArwF1B2EFKsQ=; b=PqfJISTf/zFP2GE+o6yH//8h1/gt9z3ol7767PG4NnaSB3L5o7uq9bYLYzLVOrRo4k Q3QEJADPbujRySSEHZSOdnBXla0Umql1Jy4hKMI5vY2Liax+R25E/2ZFwagE1aevgGqi SwPPDLLjVc6tdePotNNNEGjVcH00Po5n1ueHOH3IG+9daPrLIT12ZFzcPFEZMuATI1em 5Fwb2z4855FgB1HFxQiXKghFZi5muTWIUJDsnbPhEQiUkVigGCEmqPka8qJwmyN+yn7N SufSrPMWvw6+ZsDEmN+cP6ye60nCCphfxk+/1TP+2k1u6QXY1Z3GAU+131ni0NN8z8ft aX6g== 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=666AyFq1D9qQYerIxAMAAzfbK+WmtUzArwF1B2EFKsQ=; b=QFvTu9z4yStLUrDNh2rYNhrzw4rNy/2vr3Y9BTa8O7J69YV8JBUpnucJ4EmO/1VzTj ptLBFgR/i3GLwg+Qrtv6YSVbGIE48y+YnCR1I08ZY/cKuz8lZ1ZC+IdCjZfkj8SHhp1X y5qNByzFnLvBr3/Z4H8qIM8n+HjI71rKkmhtqDQEmnUuZo+aMHvOr7UQ/IO0Bt/MXmFF RZ2feFf/A+ej0sFm06HLBfiRrjbNI2ue33LJ6/yLFi05PMDp81n/F+DQrp8ViHlMC9F1 xuVySGMDH9REzeoRxFgNNMF1fi1lTtgRTcmGN6Hoyq0ACQ7gLCSYlOOJlGbjHoZYkwra maYA== X-Gm-Message-State: AOAM533nOALYZulSkpQd/Q1Lj1ysq78TSLbWp8Y25WPR/gQ5Qc2CwJqc MqrzTU7rvVH/QTO8PDB1EpMoRI/UzSA= X-Google-Smtp-Source: ABdhPJy+P98OBIn5QNsr7ErGc1bMiIYA6CJ871jRN+veFB/CzY6E9Ls78wb2puuqWGPc/+pzEkuDYg== X-Received: by 2002:a05:6214:9c4:: with SMTP id dp4mr17230054qvb.44.1605905040222; Fri, 20 Nov 2020 12:44:00 -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 s3sm2799872qtd.49.2020.11.20.12.43.59 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:43:59 -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 0AKKhwHI029559 for ; Fri, 20 Nov 2020 20:43:58 GMT Subject: [PATCH v2 115/118] NFSD: Clean up after updating NFSv2 ACL decoders From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:43:58 -0500 Message-ID: <160590503846.1340.1600484363253541165.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfsxdr.c | 18 ------------------ fs/nfsd/xdr.h | 1 - 2 files changed, 19 deletions(-) diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c index efa2760316eb..416a53d4be16 100644 --- a/fs/nfsd/nfsxdr.c +++ b/fs/nfsd/nfsxdr.c @@ -26,18 +26,6 @@ static u32 nfs_ftypes[] = { * Basic NFSv2 data types (RFC 1094 Section 2.3) */ -static __be32 * -decode_fh(__be32 *p, struct svc_fh *fhp) -{ - fh_init(fhp, NFS_FHSIZE); - memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE); - fhp->fh_handle.fh_size = NFS_FHSIZE; - - /* FIXME: Look up export pointer here and verify - * Sun Secure RPC if requested */ - return p + (NFS_FHSIZE >> 2); -} - /** * svcxdr_decode_fhandle - Decode an NFSv2 file handle * @xdr: XDR stream positioned at an encoded NFSv2 FH @@ -62,12 +50,6 @@ svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp) return XDR_DECODE_DONE; } -/* Helper function for NFSv2 ACL code */ -__be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp) -{ - return decode_fh(p, fhp); -} - static __be32 * encode_fh(__be32 *p, struct svc_fh *fhp) { diff --git a/fs/nfsd/xdr.h b/fs/nfsd/xdr.h index 6d3fb133f366..dc5fc2f77f4b 100644 --- a/fs/nfsd/xdr.h +++ b/fs/nfsd/xdr.h @@ -164,7 +164,6 @@ void nfssvc_release_readres(struct svc_rqst *rqstp); /* Helper functions for NFSv2 ACL code */ __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp, struct kstat *stat); -__be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp); enum xdr_decode_result svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp); From patchwork Fri Nov 20 20:44:04 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922543 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3F223C2D0E4 for ; Fri, 20 Nov 2020 20:44:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DB8FA2223F for ; Fri, 20 Nov 2020 20:44:07 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Q+R3os7T" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729961AbgKTUoH (ORCPT ); Fri, 20 Nov 2020 15:44:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34210 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729955AbgKTUoG (ORCPT ); Fri, 20 Nov 2020 15:44:06 -0500 Received: from mail-qk1-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2F2DC0613CF for ; Fri, 20 Nov 2020 12:44:06 -0800 (PST) Received: by mail-qk1-x744.google.com with SMTP id q5so10185890qkc.12 for ; Fri, 20 Nov 2020 12:44:06 -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=grxY7Jj7+Ffevdb8Y3aosIAD15GaaTPSTIXrVtrjCQw=; b=Q+R3os7TmDwpzJflm/1Y+MCkQw4p+lMmF7k1JhyQfYt38lrwCB1k4vumZQ6R2DaYRJ WHiDpArsZsUF/aKOh66LL8cUwk93GAG8/pSNfe7HKMvCKpuJ6G1ESDt4KPLDdyvP9joW VOa+gbr32iMQlCF2sTM7cU0O1uOr+iNefgj5s3KnndPH7K+ewpHXqSNdBttV6EW8I9EC dRBbz8iqj1NGfvWIcGKXNYPCiBh0ZZivg2doa1dfxFIDbCruv+6SoQsmDxoFMTWdqFz0 HRiZ72X0jqmpfkUkt50cNHObilXoc2/igIL0nsR4JR8vPxaYAB9Xg/MM2LjftwkqM4y4 V0QA== 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=grxY7Jj7+Ffevdb8Y3aosIAD15GaaTPSTIXrVtrjCQw=; b=JeneBzsD4xjEIMtVx9PcoMrFautPLjl4vUEohn8q042REKcUFVuOsrU9T9EkQKyAJE MU2DkZ0ftmlBdcgBhv6Ug2h0tlC7xTbRFePMCSGq8s5gqk1wFRV8LiWqxHaDgDaUtYQy OGOO5VfUN/0Iw1VH/YDEkeS9Ayho0n6O1Hfjq4Rz7MADaFT6Tua/R2y9Htt3onDTkuIG hW7k6TDze0EAna98i8ClZKd7uffXzn8G36fKMMeqwy71XTSh97Lfo81+h5jxLpoM45aj 8ljazTi+XeqEGL4e3GVMxspNxkQcJSVvMpf+9+7Zek1ceo11YEhayYE/5wMsnyWclKGi njgw== X-Gm-Message-State: AOAM533Lp3LPWpIIIK63HuqmcEK50YhB4ouTc2vgsBMDAfHuw9P66x7E U/AcOnuWnBNDm9G1zNIet75gk/15uWY= X-Google-Smtp-Source: ABdhPJx3mBRbF8LsZZItEMK2ylHlRXlXE8uGX4kO3h2xuZUvTGRxCMYw59xYm3+gkyHbDCBeUrhnzw== X-Received: by 2002:a05:620a:11ad:: with SMTP id c13mr18483050qkk.399.1605905045658; Fri, 20 Nov 2020 12:44:05 -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 e10sm2753559qkn.126.2020.11.20.12.44.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:44:05 -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 0AKKi4LN029562 for ; Fri, 20 Nov 2020 20:44:04 GMT Subject: [PATCH v2 116/118] NFSD: Update the NFSv3 GETACL argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:44:04 -0500 Message-ID: <160590504385.1340.15145791563296531133.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3acl.c | 13 +++++++------ fs/nfsd/nfs3xdr.c | 11 ++++++++++- fs/nfsd/xdr3.h | 2 ++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c index 7c30876a31a1..b8c452b951dc 100644 --- a/fs/nfsd/nfs3acl.c +++ b/fs/nfsd/nfs3acl.c @@ -124,19 +124,20 @@ static __be32 nfsd3_proc_setacl(struct svc_rqst *rqstp) /* * XDR decode functions */ + static int nfs3svc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) { + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; struct nfsd3_getaclargs *args = rqstp->rq_argp; - p = nfs3svc_decode_fh(p, &args->fh); - if (!p) - return 0; - args->mask = ntohl(*p); p++; + if (!svcxdr_decode_nfs_fh3(xdr, &args->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &args->mask) < 0) + return XDR_DECODE_FAILED; - return xdr_argsize_check(rqstp, p); + return XDR_DECODE_DONE; } - static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) { struct nfsd3_setaclargs *args = rqstp->rq_argp; diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index df593dd9924b..091baf06c494 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -53,7 +53,16 @@ svcxdr_decode_nfstime3(struct xdr_stream *xdr, struct timespec64 *timep) return XDR_DECODE_DONE; } -static enum xdr_decode_result +/** + * svcxdr_decode_nfs_fh3 - Decode an NFSv3 file handle + * @xdr: XDR stream positioned at an undecoded NFSv3 FH + * @fhp: OUT: filled-in server file handle + * + * Return values: + * %XDR_DECODE_FAILED: The encoded file handle was not valid + * %XDR_DECODE_DONE: Success + */ +enum xdr_decode_result svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp) { __be32 *p; diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 5afb3ce4f062..1fd5328d867a 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -308,6 +308,8 @@ int nfs3svc_encode_entry_plus(void *, const char *name, __be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp); __be32 *nfs3svc_decode_fh(__be32 *p, struct svc_fh *fhp); +enum xdr_decode_result +svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp); #endif /* _LINUX_NFSD_XDR3_H */ From patchwork Fri Nov 20 20:44:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922545 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A75CCC63777 for ; Fri, 20 Nov 2020 20:44:13 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 52D102223F for ; Fri, 20 Nov 2020 20:44:13 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZWrb2vnP" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729955AbgKTUoM (ORCPT ); Fri, 20 Nov 2020 15:44:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728506AbgKTUoM (ORCPT ); Fri, 20 Nov 2020 15:44:12 -0500 Received: from mail-qt1-x841.google.com (mail-qt1-x841.google.com [IPv6:2607:f8b0:4864:20::841]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47CE1C0613CF for ; Fri, 20 Nov 2020 12:44:12 -0800 (PST) Received: by mail-qt1-x841.google.com with SMTP id g17so8140226qts.5 for ; Fri, 20 Nov 2020 12:44:12 -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=JQPRAYqZFcmavsWwgSJ6lsvvG8qs4+k2c2SGzdHxflk=; b=ZWrb2vnPIgb0tpiUpemrmFn22/arNlx7ip0JzCyrmNsDl9Qgg97Zvabts7LrvoPtgU EfnaKfZZ3k0zHau5KXB3op+AphWEYrLgG5Uhohn8AGHaH9fDZaVRopjj93GAv86IOcOG 5Fa1qhB9Or59pEoPzejY+diTGtcuSqQGSiUW48eHXj9g7RnByYM17OZWbx4L6S/boS+C p1bIVqoD1rUOVfiL1S9X1mOQwCHr+/zHfaNfuJT/4VLx9BUfSq43F6ylCrHJCfPjXHwh AdRi5VYPoZNnj53qTg4HyyRZTxN0kNK8vYJY/jxwYMRpNBngLoi/9OA2JcE5TCXZFLn7 rgkA== 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=JQPRAYqZFcmavsWwgSJ6lsvvG8qs4+k2c2SGzdHxflk=; b=ToOxLB4/lBcFjGZ3SWUA70x1SolOwFaggmJ1a74KrZMV+6u7PCe1hednRWawCvg6sd fY8+L7s9ny2bVuFMB/gFLGFp0NhvBBZSXxN6WW0Emrdik9QX/c5bEkGQNljC/345AaMB t6evDFkw9/bpPkrcHRUUy83gxbFiteFHxUwFqoYb25CIcSu41sYOKjFXdMELOb6Upj1b TU/WtszKHmft+i3ex6iThfIItjFxmHaYVqSkOutP8YKMvuFnZU+6oQikundbaYdajVA9 25jACXtde/9q0mCA40MFvPD67fkaka5eZM1dAfmuSB8JrscMPgl9+x2k3EnMxWXOd/gY GLiQ== X-Gm-Message-State: AOAM5328NAxiCBmVyqJRxIQDnjwQO1PVOSApqEPWH4MoQaeGxWD/SCo7 wcM9Ei98kCooiIJOw7tbzH6ujBOydPk= X-Google-Smtp-Source: ABdhPJyx25XcN7YlS9AgBxgzanbEYXKlIsiU4uGUNpBh8oLdpTZsrCDbe9jXMkoRFa2CIC8Dm/Zs9g== X-Received: by 2002:ac8:6b92:: with SMTP id z18mr17494411qts.30.1605905051156; Fri, 20 Nov 2020 12:44:11 -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 k1sm2954423qtc.24.2020.11.20.12.44.10 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:44:10 -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 0AKKi9sL029566 for ; Fri, 20 Nov 2020 20:44:09 GMT Subject: [PATCH v2 117/118] NFSD: Update the NFSv2 SETACL argument decoder to use struct xdr_stream From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:44:09 -0500 Message-ID: <160590504937.1340.17157925079005318852.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3acl.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/fs/nfsd/nfs3acl.c b/fs/nfsd/nfs3acl.c index b8c452b951dc..8deb0d22e62a 100644 --- a/fs/nfsd/nfs3acl.c +++ b/fs/nfsd/nfs3acl.c @@ -140,28 +140,23 @@ static int nfs3svc_decode_getaclargs(struct svc_rqst *rqstp, __be32 *p) static int nfs3svc_decode_setaclargs(struct svc_rqst *rqstp, __be32 *p) { - struct nfsd3_setaclargs *args = rqstp->rq_argp; - struct kvec *head = rqstp->rq_arg.head; - unsigned int base; - int n; - - p = nfs3svc_decode_fh(p, &args->fh); - if (!p) - return 0; - args->mask = ntohl(*p++); - if (args->mask & ~NFS_ACL_MASK || - !xdr_argsize_check(rqstp, p)) - return 0; - - base = (char *)p - (char *)head->iov_base; - n = nfsacl_decode(&rqstp->rq_arg, base, NULL, - (args->mask & NFS_ACL) ? - &args->acl_access : NULL); - if (n > 0) - n = nfsacl_decode(&rqstp->rq_arg, base + n, NULL, - (args->mask & NFS_DFACL) ? - &args->acl_default : NULL); - return (n > 0); + struct xdr_stream *xdr = &rqstp->rq_xdr_stream; + struct nfsd3_setaclargs *argp = rqstp->rq_argp; + + if (!svcxdr_decode_nfs_fh3(xdr, &argp->fh)) + return XDR_DECODE_FAILED; + if (xdr_stream_decode_u32(xdr, &argp->mask) < 0) + return XDR_DECODE_FAILED; + if (argp->mask & ~NFS_ACL_MASK) + return XDR_DECODE_FAILED; + if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_ACL) ? + &argp->acl_access : NULL)) + return XDR_DECODE_FAILED; + if (!nfs_stream_decode_acl(xdr, NULL, (argp->mask & NFS_DFACL) ? + &argp->acl_default : NULL)) + return XDR_DECODE_FAILED; + + return XDR_DECODE_DONE; } /* From patchwork Fri Nov 20 20:44:14 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 11922547 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CCECBC56202 for ; Fri, 20 Nov 2020 20:44:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6DAA62223F for ; Fri, 20 Nov 2020 20:44:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rtdSGb+C" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730008AbgKTUoS (ORCPT ); Fri, 20 Nov 2020 15:44:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34238 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728041AbgKTUoR (ORCPT ); Fri, 20 Nov 2020 15:44:17 -0500 Received: from mail-qt1-x82a.google.com (mail-qt1-x82a.google.com [IPv6:2607:f8b0:4864:20::82a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85E6AC0613CF for ; Fri, 20 Nov 2020 12:44:17 -0800 (PST) Received: by mail-qt1-x82a.google.com with SMTP id z3so8105914qtw.9 for ; Fri, 20 Nov 2020 12:44:17 -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=VR+1b+4gZzerr40L7/MLry9hbw6sg4pYhZDwaZeAW/I=; b=rtdSGb+CU3yPvw12oPO0b/JK88n7G8WPxl+XS4C+ZHs0XnbNvyudtpCAG27UkCJmDb TFbgz+TCsrOGPsdNkoWKRsT8JX7MEhim/flPvzeZIBjdMSHXsUfOJzyZqbPATYgMkbSE XwzkPTAwkOwwTC0Wy5rBk1/4FHSSQIkyfYJlPLfr531Rf+5qPDio+mk99+ayho/zC4vJ SyK5jrvgCcni6lHrZNWtgZ1DaODtFsQEwYIT4M2quYZTpxz6flYo298UnQ1xiFswsnaR OAcp+j2MJozf2MS0Sf48CMK84IpHVB+H/LarHLoVJ1KwdlaxcNvH0YADUhIO0p1t9hkH oQMQ== 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=VR+1b+4gZzerr40L7/MLry9hbw6sg4pYhZDwaZeAW/I=; b=aSE5X4PzmxEQKzaORv/qS8Y4XUvkbwimDnLD1U0zMRelIXBkmxYNODxfOgk8qKVh75 xmMbgqdmFhateKBTfGOjejTzpxpmBWewSN2fLu4Iub/k9WmzItQXC/LEFLbEThZmVCJx oVdVjG1Ic/GQIEk/b1mEpMdkEv2Eg/AdL/QIFH9bjIsGtne+DSbPrtmU+K3MRK3/y40W EOmzMF2AQsTZZbtCVQF4r7DfCTXd/f78OAIdGYRUaokQjgiSheSjZPwhYethmgE0QEa/ c4MScX5bPf8BkCU4zmJ8SBzybUPmEwpraRuIunQ5U3JPcB6wfRUcOnFjdYoLO7go11OK aG5w== X-Gm-Message-State: AOAM533KLuPfYOjfAUaLTkj1xXbJJc1HIyGzgzSyTGzPXV4EBVhlj+Ma guugpZEqEZkN2CuNTgdSSe+9LDfY4B0= X-Google-Smtp-Source: ABdhPJweqjp2u/wn8qigGXiCA4KhPhGtNqZ019kt8T/NEhbL7MfpmAI9XPp1u8+v98OH5HKmht7MFg== X-Received: by 2002:a05:622a:28b:: with SMTP id z11mr16792803qtw.94.1605905056461; Fri, 20 Nov 2020 12:44:16 -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 i12sm2685280qtr.56.2020.11.20.12.44.15 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 20 Nov 2020 12:44:15 -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 0AKKiEbt029569 for ; Fri, 20 Nov 2020 20:44:14 GMT Subject: [PATCH v2 118/118] NFSD: Clean up after updating NFSv3 ACL decoders From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 20 Nov 2020 15:44:14 -0500 Message-ID: <160590505475.1340.18047353388317226285.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 Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Chuck Lever --- fs/nfsd/nfs3xdr.c | 20 -------------------- fs/nfsd/xdr3.h | 1 - 2 files changed, 21 deletions(-) diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 091baf06c494..6ed396f50a76 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c @@ -82,26 +82,6 @@ svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp) return XDR_DECODE_DONE; } -static __be32 * -decode_fh(__be32 *p, struct svc_fh *fhp) -{ - unsigned int size; - fh_init(fhp, NFS3_FHSIZE); - size = ntohl(*p++); - if (size > NFS3_FHSIZE) - return NULL; - - memcpy(&fhp->fh_handle.fh_base, p, size); - fhp->fh_handle.fh_size = size; - return p + XDR_QUADLEN(size); -} - -/* Helper function for NFSv3 ACL code */ -__be32 *nfs3svc_decode_fh(__be32 *p, struct svc_fh *fhp) -{ - return decode_fh(p, fhp); -} - static __be32 * encode_fh(__be32 *p, struct svc_fh *fhp) { diff --git a/fs/nfsd/xdr3.h b/fs/nfsd/xdr3.h index 1fd5328d867a..59027a9244fb 100644 --- a/fs/nfsd/xdr3.h +++ b/fs/nfsd/xdr3.h @@ -307,7 +307,6 @@ int nfs3svc_encode_entry_plus(void *, const char *name, /* Helper functions for NFSv3 ACL code */ __be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp); -__be32 *nfs3svc_decode_fh(__be32 *p, struct svc_fh *fhp); enum xdr_decode_result svcxdr_decode_nfs_fh3(struct xdr_stream *xdr, struct svc_fh *fhp);