From: Jeff Layton <jlayton@kernel.org>
To: Chuck Lever <cel@kernel.org>, linux-nfs@vger.kernel.org
Subject: Re: [PATCH v1 00/27] Server-side RPC reply header parsing overhaul
Date: Tue, 10 Jan 2023 09:53:30 -0500 [thread overview]
Message-ID: <64b51ef5ed4b11f8a6d59bf59ce0ab8c36ef454f.camel@kernel.org> (raw)
In-Reply-To: <167319499150.7490.2294168831574653380.stgit@bazille.1015granger.net>
On Sun, 2023-01-08 at 11:28 -0500, Chuck Lever wrote:
> The purpose of this series is to replace the svc_put* macros in the
> Linux kernel server's RPC reply header construction code with
> xdr_stream helpers. I've measured no change in CPU utilization after
> the overhaul.
>
> Memory safety: Buffer bounds checking after encoding each XDR item
> is more memory-safe than the current mechanism. Subsequent memory
> safety improvements to the common xdr_stream helpers will benefit
> all who use them.
>
> Audit friendliness: The new code has additional comments and other
> clean-up to help align it with the relevant RPC protocol
> specifications. The use of common helpers also makes the encoders
> easier to audit and maintain.
>
> I've split the full series in half to make it easier to review. The
> patches posted here are the second half, handling RPC reply header
> encoding.
>
> Note that another benefit of this work is that we are taking one or
> two more strides closer to greater commonality between the client
> and server implementations of RPCSEC GSS.
>
> ---
>
> Chuck Lever (27):
> SUNRPC: Clean up svcauth_gss_release()
> SUNRPC: Rename automatic variables in svcauth_gss_wrap_resp_integ()
> SUNRPC: Record gss_get_mic() errors in svcauth_gss_wrap_integ()
> SUNRPC: Replace checksum construction in svcauth_gss_wrap_integ()
> SUNRPC: Convert svcauth_gss_wrap_integ() to use xdr_stream()
> SUNRPC: Rename automatic variables in svcauth_gss_wrap_resp_priv()
> SUNRPC: Record gss_wrap() errors in svcauth_gss_wrap_priv()
> SUNRPC: Add @head and @tail variables in svcauth_gss_wrap_priv()
> SUNRPC: Convert svcauth_gss_wrap_priv() to use xdr_stream()
> SUNRPC: Check rq_auth_stat when preparing to wrap a response
> SUNRPC: Remove the rpc_stat variable in svc_process_common()
> SUNRPC: Add XDR encoding helper for opaque_auth
> SUNRPC: Push svcxdr_init_encode() into svc_process_common()
> SUNRPC: Move svcxdr_init_encode() into ->accept methods
> SUNRPC: Use xdr_stream to encode Reply verifier in svcauth_null_accept()
> SUNRPC: Use xdr_stream to encode Reply verifier in svcauth_unix_accept()
> SUNRPC: Use xdr_stream to encode Reply verifier in svcauth_tls_accept()
> SUNRPC: Convert unwrap data paths to use xdr_stream for replies
> SUNRPC: Use xdr_stream to encode replies in server-side GSS upcall helpers
> SUNRPC: Use xdr_stream for encoding GSS reply verifiers
> SUNRPC: Hoist init_encode out of svc_authenticate()
> SUNRPC: Convert RPC Reply header encoding to use xdr_stream
> SUNRPC: Final clean-up of svc_process_common()
> SUNRPC: Remove no-longer-used helper functions
> SUNRPC: Refactor RPC server dispatch method
> SUNRPC: Set rq_accept_statp inside ->accept methods
> SUNRPC: Go back to using gsd->body_start
>
>
> fs/lockd/svc.c | 5 +-
> fs/nfs/callback_xdr.c | 6 +-
> fs/nfsd/nfscache.c | 4 +-
> fs/nfsd/nfsd.h | 2 +-
> fs/nfsd/nfssvc.c | 10 +-
> include/linux/sunrpc/svc.h | 116 +++----
> include/linux/sunrpc/xdr.h | 23 ++
> include/trace/events/rpcgss.h | 22 ++
> net/sunrpc/auth_gss/svcauth_gss.c | 505 +++++++++++++++---------------
> net/sunrpc/svc.c | 91 +++---
> net/sunrpc/svcauth_unix.c | 40 ++-
> net/sunrpc/xdr.c | 29 ++
> 12 files changed, 451 insertions(+), 402 deletions(-)
>
> --
> Chuck Lever
>
I went through the whole set and this all looks like good stuff to me.
The result is a lot more readable, and there is a lot less manual
fiddling with buffer lengths and such.
Do you have a public branch with the current state of this set?
You can add:
Reviewed-by: Jeff Layton <jlayton@kernel.org>
next prev parent reply other threads:[~2023-01-10 14:53 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-08 16:28 [PATCH v1 00/27] Server-side RPC reply header parsing overhaul Chuck Lever
2023-01-08 16:28 ` [PATCH v1 01/27] SUNRPC: Clean up svcauth_gss_release() Chuck Lever
2023-01-10 14:01 ` Jeff Layton
2023-01-08 16:28 ` [PATCH v1 02/27] SUNRPC: Rename automatic variables in svcauth_gss_wrap_resp_integ() Chuck Lever
2023-01-08 16:28 ` [PATCH v1 03/27] SUNRPC: Record gss_get_mic() errors in svcauth_gss_wrap_integ() Chuck Lever
2023-01-08 16:28 ` [PATCH v1 04/27] SUNRPC: Replace checksum construction " Chuck Lever
2023-01-08 16:28 ` [PATCH v1 05/27] SUNRPC: Convert svcauth_gss_wrap_integ() to use xdr_stream() Chuck Lever
2023-01-08 16:29 ` [PATCH v1 06/27] SUNRPC: Rename automatic variables in svcauth_gss_wrap_resp_priv() Chuck Lever
2023-01-08 16:29 ` [PATCH v1 07/27] SUNRPC: Record gss_wrap() errors in svcauth_gss_wrap_priv() Chuck Lever
2023-01-08 16:29 ` [PATCH v1 08/27] SUNRPC: Add @head and @tail variables " Chuck Lever
2023-01-08 16:29 ` [PATCH v1 09/27] SUNRPC: Convert svcauth_gss_wrap_priv() to use xdr_stream() Chuck Lever
2023-01-08 16:29 ` [PATCH v1 10/27] SUNRPC: Check rq_auth_stat when preparing to wrap a response Chuck Lever
2023-01-08 16:29 ` [PATCH v1 11/27] SUNRPC: Remove the rpc_stat variable in svc_process_common() Chuck Lever
2023-01-08 16:29 ` [PATCH v1 12/27] SUNRPC: Add XDR encoding helper for opaque_auth Chuck Lever
2023-01-08 16:29 ` [PATCH v1 13/27] SUNRPC: Push svcxdr_init_encode() into svc_process_common() Chuck Lever
2023-01-08 16:29 ` [PATCH v1 14/27] SUNRPC: Move svcxdr_init_encode() into ->accept methods Chuck Lever
2023-01-08 16:29 ` [PATCH v1 15/27] SUNRPC: Use xdr_stream to encode Reply verifier in svcauth_null_accept() Chuck Lever
2023-01-08 16:30 ` [PATCH v1 16/27] SUNRPC: Use xdr_stream to encode Reply verifier in svcauth_unix_accept() Chuck Lever
2023-01-08 16:30 ` [PATCH v1 17/27] SUNRPC: Use xdr_stream to encode Reply verifier in svcauth_tls_accept() Chuck Lever
2023-01-08 16:30 ` [PATCH v1 18/27] SUNRPC: Convert unwrap data paths to use xdr_stream for replies Chuck Lever
2023-01-08 16:30 ` [PATCH v1 19/27] SUNRPC: Use xdr_stream to encode replies in server-side GSS upcall helpers Chuck Lever
2023-01-08 16:30 ` [PATCH v1 20/27] SUNRPC: Use xdr_stream for encoding GSS reply verifiers Chuck Lever
2023-01-08 16:30 ` [PATCH v1 21/27] SUNRPC: Hoist init_encode out of svc_authenticate() Chuck Lever
2023-01-08 16:30 ` [PATCH v1 22/27] SUNRPC: Convert RPC Reply header encoding to use xdr_stream Chuck Lever
2023-01-08 16:30 ` [PATCH v1 23/27] SUNRPC: Final clean-up of svc_process_common() Chuck Lever
2023-01-08 16:30 ` [PATCH v1 24/27] SUNRPC: Remove no-longer-used helper functions Chuck Lever
2023-01-08 16:30 ` [PATCH v1 25/27] SUNRPC: Refactor RPC server dispatch method Chuck Lever
2023-01-08 16:31 ` [PATCH v1 26/27] SUNRPC: Set rq_accept_statp inside ->accept methods Chuck Lever
2023-05-02 11:01 ` Jiri Slaby
2023-05-02 14:14 ` Chuck Lever III
2023-05-02 21:29 ` NeilBrown
2023-05-16 19:23 ` Jeff Layton
2023-05-16 19:25 ` Chuck Lever III
2023-05-16 21:25 ` Jeff Layton
2023-05-16 21:27 ` Chuck Lever III
2023-05-16 22:28 ` Jeff Layton
2023-01-08 16:31 ` [PATCH v1 27/27] SUNRPC: Go back to using gsd->body_start Chuck Lever
2023-01-10 14:53 ` Jeff Layton [this message]
2023-01-10 15:16 ` [PATCH v1 00/27] Server-side RPC reply header parsing overhaul Chuck Lever III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=64b51ef5ed4b11f8a6d59bf59ce0ab8c36ef454f.camel@kernel.org \
--to=jlayton@kernel.org \
--cc=cel@kernel.org \
--cc=linux-nfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox