From: Jakub Kicinski <kuba@kernel.org>
To: Sagi Grimberg <sagi@grimberg.me>
Cc: Hannes Reinecke <hare@suse.de>, Christoph Hellwig <hch@lst.de>,
Keith Busch <kbusch@kernel.org>,
linux-nvme@lists.infradead.org,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, Boris Pismenny <boris.pismenny@gmail.com>
Subject: Re: [PATCH 4/4] net/tls: implement ->read_sock()
Date: Tue, 20 Jun 2023 10:08:43 -0700 [thread overview]
Message-ID: <20230620100843.19569d60@kernel.org> (raw)
In-Reply-To: <5bbb6ce4-a251-a357-3efc-9e899e470b9c@grimberg.me>
On Tue, 20 Jun 2023 16:21:22 +0300 Sagi Grimberg wrote:
> > + err = tls_rx_reader_lock(sk, ctx, true);
> > + if (err < 0)
> > + return err;
>
> Unlike recvmsg or splice_read, the caller of read_sock is assumed to
> have the socket locked, and tls_rx_reader_lock also calls lock_sock,
> how is this not a deadlock?
Yeah :|
> I'm not exactly clear why the lock is needed here or what is the subtle
> distinction between tls_rx_reader_lock and what lock_sock provides.
It's a bit of a workaround for the consistency of the data stream.
There's bunch of state in the TLS ULP and waiting for mem or data
releases and re-takes the socket lock. So to stop the flow annoying
corner case races I slapped a lock around all of the reader.
IMHO depending on the socket lock for anything non-trivial and outside
of the socket itself is a bad idea in general.
The immediate need at the time was that if you did a read() and someone
else did a peek() at the same time from a stream of A B C D you may read
A D B C.
next prev parent reply other threads:[~2023-06-20 17:08 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-20 10:28 [PATCHv5 0/4] net/tls: fixes for NVMe-over-TLS Hannes Reinecke
2023-06-20 10:28 ` [PATCH 1/4] net/tls: handle MSG_EOR for tls_sw TX flow Hannes Reinecke
2023-06-20 10:28 ` [PATCH 2/4] net/tls: handle MSG_EOR for tls_device " Hannes Reinecke
2023-06-20 17:12 ` Sabrina Dubroca
2023-06-21 6:09 ` Hannes Reinecke
2023-06-20 10:28 ` [PATCH 3/4] selftests/net/tls: add test for MSG_EOR Hannes Reinecke
2023-06-20 10:28 ` [PATCH 4/4] net/tls: implement ->read_sock() Hannes Reinecke
2023-06-20 13:21 ` Sagi Grimberg
2023-06-20 17:08 ` Jakub Kicinski [this message]
2023-06-21 6:44 ` Hannes Reinecke
2023-06-21 8:39 ` Sagi Grimberg
2023-06-21 9:08 ` Hannes Reinecke
2023-06-21 9:49 ` Sagi Grimberg
2023-06-21 19:31 ` Jakub Kicinski
-- strict thread matches above, loose matches on Subject: below --
2023-06-14 6:22 [PATCHv4 0/4] net/tls: fixes for NVMe-over-TLS Hannes Reinecke
2023-06-14 6:22 ` [PATCH 4/4] net/tls: implement ->read_sock() Hannes Reinecke
2023-06-17 6:28 ` Jakub Kicinski
2023-06-17 14:08 ` Simon Horman
2023-06-19 8:16 ` Dan Carpenter
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=20230620100843.19569d60@kernel.org \
--to=kuba@kernel.org \
--cc=boris.pismenny@gmail.com \
--cc=edumazet@google.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=sagi@grimberg.me \
/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.