All of lore.kernel.org
 help / color / mirror / Atom feed
From: Scott Mayhew <smayhew@redhat.com>
To: Justin Worrell <jworrell@gmail.com>
Cc: linux-nfs@vger.kernel.org, trondmy@hammerspace.com, okorniev@redhat.com
Subject: Re: [PATCH] xs_sock_recv_cmsg failing to call xs_sock_process_cmsg
Date: Wed, 3 Sep 2025 16:54:47 -0400	[thread overview]
Message-ID: <aLirFyirQpRRW3qr@aion> (raw)
In-Reply-To: <966f4d30-16f6-4a11-8d6c-1d6102781e71@gmail.com>

Hi Justin,

On Tue, 02 Sep 2025, Justin Worrell wrote:

> xs_sock_recv_cmsg was failing to call xs_sock_process_cmsg for any cmsg type
> other than TLS_RECORD_TYPE_ALERT (TLS_RECORD_TYPE_DATA, and other values not
> handled.) Based on my reading of the previous commit (cc5d5908: sunrpc: fix
> client side handling of tls alerts), it looks like only iov_iter_revert
> should be conditional on TLS_RECORD_TYPE_ALERT (but that other cmsg types
> should still call xs_sock_process_cmsg). On my machine, I was unable to
> connect (over mtls) to an NFS share hosted on FreeBSD. With this patch
> applied, I am able to mount the share again.
> 
> ---
> diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
> --- a/net/sunrpc/xprtsock.c	(revision
> b320789d6883cc00ac78ce83bccbfe7ed58afcf0)
> +++ b/net/sunrpc/xprtsock.c	(date 1756813457481)
> @@ -407,9 +407,9 @@
>  	iov_iter_kvec(&msg.msg_iter, ITER_DEST, &alert_kvec, 1,
>  		      alert_kvec.iov_len);
>  	ret = sock_recvmsg(sock, &msg, flags);
> -	if (ret > 0 &&
> -	    tls_get_record_type(sock->sk, &u.cmsg) == TLS_RECORD_TYPE_ALERT) {
> -		iov_iter_revert(&msg.msg_iter, ret);
> +	if (ret > 0) {
> +		if (tls_get_record_type(sock->sk, &u.cmsg) == TLS_RECORD_TYPE_ALERT)
> +			iov_iter_revert(&msg.msg_iter, ret);
>  		ret = xs_sock_process_cmsg(sock, &msg, msg_flags, &u.cmsg,
>  					   -EAGAIN);
>  	}
> 

I set up a freebsd server and can reproduce the mount failure from a
linux client (both with xprtsec=tls and xprtsec=mtls). 

Your changes look alright to me, but I can't actually apply your patch.
How was the patch generated?  There's a line break in the middle of
the from-file line (plus I've never seen the "revision" and "date" text
in the from-file and to-file lines in the patch header before... but
maybe I haven't paid enough attention).  Finally, every context line
seems to have an extra space or two.

If I make your changes manually, it fixes mounting with both xprtsec=tls
and xprtsec=mtls.

-Scott


  parent reply	other threads:[~2025-09-03 20:54 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-02 11:58 [PATCH] xs_sock_recv_cmsg failing to call xs_sock_process_cmsg Justin Worrell
2025-09-02 16:21 ` Olga Kornievskaia
2025-09-02 20:46   ` Justin Worrell
2025-09-02 21:11     ` Olga Kornievskaia
2025-09-02 23:06       ` Justin Worrell
2025-09-03 16:39         ` Olga Kornievskaia
2025-09-03 20:54 ` Scott Mayhew [this message]
2025-09-04 14:32   ` [PATCH v2 0/1] call xs_sock_process_cmsg for all cmsg Justin Worrell
2025-09-04 14:33     ` [PATCH v2 1/1] " Justin Worrell
2025-09-04 17:12     ` [PATCH v2 0/1] " Scott Mayhew
2025-09-04 21:09       ` [PATCH v3] " Justin Worrell

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=aLirFyirQpRRW3qr@aion \
    --to=smayhew@redhat.com \
    --cc=jworrell@gmail.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=okorniev@redhat.com \
    --cc=trondmy@hammerspace.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.