From: Hannes Reinecke <hare@suse.de>
To: Christoph Hellwig <hch@lst.de>
Cc: Sagi Grimberg <sagi@grimberg.me>, Keith Busch <kbusch@kernel.org>,
linux-nvme@lists.infradead.org, Jakub Kicinski <kuba@kernel.org>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, Hannes Reinecke <hare@suse.de>
Subject: [PATCH 5/6] net/tls: split tls_rx_reader_lock
Date: Wed, 19 Jul 2023 13:38:35 +0200 [thread overview]
Message-ID: <20230719113836.68859-6-hare@suse.de> (raw)
In-Reply-To: <20230719113836.68859-1-hare@suse.de>
Split tls_rx_reader_{lock,unlock} into an 'acquire/release' and
the actual locking part.
With that we can use the tls_rx_reader_lock in situations where
the socket is already locked.
Suggested-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
net/tls/tls_sw.c | 38 ++++++++++++++++++++++----------------
1 file changed, 22 insertions(+), 16 deletions(-)
diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c
index 9aef45e870a5..d0636ea13009 100644
--- a/net/tls/tls_sw.c
+++ b/net/tls/tls_sw.c
@@ -1848,13 +1848,10 @@ tls_read_flush_backlog(struct sock *sk, struct tls_prot_info *prot,
return sk_flush_backlog(sk);
}
-static int tls_rx_reader_lock(struct sock *sk, struct tls_sw_context_rx *ctx,
- bool nonblock)
+static int tls_rx_reader_acquire(struct sock *sk, struct tls_sw_context_rx *ctx,
+ bool nonblock)
{
long timeo;
- int err;
-
- lock_sock(sk);
timeo = sock_rcvtimeo(sk, nonblock);
@@ -1868,26 +1865,30 @@ static int tls_rx_reader_lock(struct sock *sk, struct tls_sw_context_rx *ctx,
!READ_ONCE(ctx->reader_present), &wait);
remove_wait_queue(&ctx->wq, &wait);
- if (timeo <= 0) {
- err = -EAGAIN;
- goto err_unlock;
- }
- if (signal_pending(current)) {
- err = sock_intr_errno(timeo);
- goto err_unlock;
- }
+ if (timeo <= 0)
+ return -EAGAIN;
+ if (signal_pending(current))
+ return sock_intr_errno(timeo);
}
WRITE_ONCE(ctx->reader_present, 1);
return 0;
+}
-err_unlock:
- release_sock(sk);
+static int tls_rx_reader_lock(struct sock *sk, struct tls_sw_context_rx *ctx,
+ bool nonblock)
+{
+ int err;
+
+ lock_sock(sk);
+ err = tls_rx_reader_acquire(sk, ctx, nonblock);
+ if (err)
+ release_sock(sk);
return err;
}
-static void tls_rx_reader_unlock(struct sock *sk, struct tls_sw_context_rx *ctx)
+static void tls_rx_reader_release(struct sock *sk, struct tls_sw_context_rx *ctx)
{
if (unlikely(ctx->reader_contended)) {
if (wq_has_sleeper(&ctx->wq))
@@ -1899,6 +1900,11 @@ static void tls_rx_reader_unlock(struct sock *sk, struct tls_sw_context_rx *ctx)
}
WRITE_ONCE(ctx->reader_present, 0);
+}
+
+static void tls_rx_reader_unlock(struct sock *sk, struct tls_sw_context_rx *ctx)
+{
+ tls_rx_reader_release(sk, ctx);
release_sock(sk);
}
--
2.35.3
next prev parent reply other threads:[~2023-07-19 11:40 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-19 11:38 [RESENT PATCHv7 0/6] net/tls: fixes for NVMe-over-TLS Hannes Reinecke
2023-07-19 11:38 ` [PATCH 1/6] net/tls: handle MSG_EOR for tls_sw TX flow Hannes Reinecke
2023-07-19 11:38 ` [PATCH 2/6] net/tls: handle MSG_EOR for tls_device " Hannes Reinecke
2023-07-19 11:38 ` [PATCH 3/6] selftests/net/tls: add test for MSG_EOR Hannes Reinecke
2023-07-19 11:38 ` [PATCH 4/6] net/tls: Use tcp_read_sock() instead of ops->read_sock() Hannes Reinecke
2023-07-19 11:54 ` Sagi Grimberg
2023-07-19 11:38 ` Hannes Reinecke [this message]
2023-07-19 11:55 ` [PATCH 5/6] net/tls: split tls_rx_reader_lock Sagi Grimberg
2023-07-19 11:38 ` [PATCH 6/6] net/tls: implement ->read_sock() Hannes Reinecke
2023-07-19 11:55 ` Sagi Grimberg
2023-07-20 18:32 ` Simon Horman
2023-07-21 6:03 ` Hannes Reinecke
2023-07-21 3:02 ` Jakub Kicinski
2023-07-21 13:53 ` Hannes Reinecke
2023-07-21 14:50 ` Jakub Kicinski
-- strict thread matches above, loose matches on Subject: below --
2023-07-21 14:35 [PATCHv8 0/6] net/tls: fixes for NVMe-over-TLS Hannes Reinecke
2023-07-21 14:35 ` [PATCH 5/6] net/tls: split tls_rx_reader_lock Hannes Reinecke
2023-07-26 19:15 [PATCHv9 0/6] net/tls: fixes for NVMe-over-TLS Hannes Reinecke
2023-07-26 19:15 ` [PATCH 5/6] net/tls: split tls_rx_reader_lock Hannes Reinecke
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=20230719113836.68859-6-hare@suse.de \
--to=hare@suse.de \
--cc=edumazet@google.com \
--cc=hch@lst.de \
--cc=kbusch@kernel.org \
--cc=kuba@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).