Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1149033pxu; Mon, 23 Nov 2020 12:57:04 -0800 (PST) X-Google-Smtp-Source: ABdhPJyichfWfjmuOi+75QAXiWyzxb559YrCAgsZLmeKEdpQ/jZQEMPFHveffIPW5NbjTKR4xmjr X-Received: by 2002:a17:906:50e:: with SMTP id j14mr1245476eja.403.1606165024213; Mon, 23 Nov 2020 12:57:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606165024; cv=none; d=google.com; s=arc-20160816; b=iKmgxkX806LshUK2bn3qOAcL7VXlshWQJ6HuPe6PJT019PLjTNbT0jcBWXIrjha3QS ragI8BcMncvQ1wPSKjT8I9g7c1S0+iimMLrBCGbIQAva/Qm88DnHRnROjPHtknm2FOZy zdufD2prQNSV+CcMtYWH5hx7Q5Dqejrd7KZWP5LlxXmrK6/21oKbhNY6B2oC1w0eAG0Z q8GzuYI7uzmiEplxgPKsQR5Mbecspk5pm0r4PlpjhooxpI0xj97nNKreQ6wheybeIA8V 4LdlGS+HX1GcMHaom/+B9pdaOay05f6yDGX4JizX1RM7h124+6xeQ7Zuw9l4+6CMXnHc d7MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:from:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:date :dkim-signature:dkim-filter; bh=dHmeuLEB+pPCltH2/vSYGu+9m4HGXkAE4YxgdYbliis=; b=Fy3ziAymD0xNG1jJ2qJJeNSfrr0IRLZEwf4iHXqDhRv1kA5C+G8JMU8Xk2sg36sZw3 Hn3Ae8WqPlWoP9P63+QpOhYn/AHUv37Y48TgghQbXrBpCkWi4DoqgtbOE6duw6i4EyXk XstYWvgkf3NsakrzltQJOfzsmMTwaEITtlT7lA9iY53asmFJFTibZCM7ct6n6e6WmeAS cxG37TWtYti+Plje4D1Igxb7468WftC2dWUt3WnDOX6fChvUuYpye24R686WyfaAIxsP zwKkzOIFcNhWKW7F+Dmhqqoy1RknWbFZCLDEIAi2lvmZfemUDWsbxKE8fKpSJSLAWSX1 MQHg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@fieldses.org header.s=default header.b=EFE9I69e; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id sb4si7354890ejb.750.2020.11.23.12.56.33; Mon, 23 Nov 2020 12:57:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@fieldses.org header.s=default header.b=EFE9I69e; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728515AbgKWUzN (ORCPT + 99 others); Mon, 23 Nov 2020 15:55:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49552 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728975AbgKWUzN (ORCPT ); Mon, 23 Nov 2020 15:55:13 -0500 Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F5E6C0613CF for ; Mon, 23 Nov 2020 12:55:13 -0800 (PST) Received: by fieldses.org (Postfix, from userid 2815) id 18ACA6EA1; Mon, 23 Nov 2020 15:55:12 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org 18ACA6EA1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fieldses.org; s=default; t=1606164912; bh=dHmeuLEB+pPCltH2/vSYGu+9m4HGXkAE4YxgdYbliis=; h=Date:To:Cc:Subject:References:In-Reply-To:From:From; b=EFE9I69eMYuccvJO4uKUdBaonNEK2Ip9tL6Jd6JBN6iJqOEVED+y2pQUxz5coQkyr cAL/ilTvwZtWM9NSZn2cci94w1Vj5H9Q2D7O2hgGPLZttM/+eI1HXfjeErwE2S8xlD JgkLkphIJ7nrMqjQY8cKt/ma/+pzUuH28M8AW0NQ= Date: Mon, 23 Nov 2020 15:55:12 -0500 To: Chuck Lever Cc: linux-nfs@vger.kernel.org Subject: Re: [PATCH v2 087/118] NFSD: Update READDIR3args decoders to use struct xdr_stream Message-ID: <20201123205512.GI32599@fieldses.org> References: <160590425404.1340.8850646771948736468.stgit@klimt.1015granger.net> <160590488919.1340.2035631615670807514.stgit@klimt.1015granger.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <160590488919.1340.2035631615670807514.stgit@klimt.1015granger.net> User-Agent: Mutt/1.5.21 (2010-09-15) From: bfields@fieldses.org (J. Bruce Fields) Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Fri, Nov 20, 2020 at 03:41:29PM -0500, Chuck Lever wrote: > As an additional clean up, neither nfsd3_proc_readdir() nor > nfsd3_proc_readdirplus() make use of the dircount argument, so > remove it. Are we technically violating the protocol if we return more than dircount entries? https://tools.ietf.org/html/rfc1813#page-82 doesn't say it's optional. I suppose we'd know by now if any client actually cared. Seems like it'd be easy to implement, though. Anyway, for now: > 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; maybe just add "/* ignored */" to make it clear it's inentional we're not actually using the value read into this variable?: > + u32 dircount; --b. > > - 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; > }; >