From: Paolo Abeni <pabeni@redhat.com>
To: Suren Baghdasaryan <surenb@google.com>,
akpm@linux-foundation.org, Eric Dumazet <edumazet@google.com>
Cc: dave.hansen@linux.intel.com, Liam.Howlett@oracle.com,
ljs@kernel.org, david@redhat.com, willy@infradead.org,
shakeel.butt@linux.dev, vbabka@kernel.org, jannh@google.com,
aliceryhl@google.com, arve@android.com, cmllamas@google.com,
christian@brauner.io, tkjos@android.com, dsahern@kernel.org,
davem@davemloft.net, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
netdev@vger.kernel.org, syzbot@syzkaller.appspotmail.com
Subject: Re: [PATCH v7 5/5] tcp: Remove mmap_lock fallback path
Date: Tue, 1 Sep 2026 09:37:02 +0200 [thread overview]
Message-ID: <3e84c09f-d760-41e9-a99f-0d86239b5ebd@redhat.com> (raw)
In-Reply-To: <20260831203056.838265-6-surenb@google.com>
adding Eric.
Full series at:
https://lore.kernel.org/netdev/20260831203056.838265-1-surenb@google.com/
On 8/31/26 10:30 PM, Suren Baghdasaryan wrote:
> From: Dave Hansen <dave.hansen@linux.intel.com>
>
> Previously, the per-VMA locking could fail in the face of writers
> which necessitates a fallback to mmap_lock. The new
> vma_start_read_unlocked() will wait for writers instead of failing.
>
> Use the new helper. Wait for writers. Remove the fallback to mmap_lock.
> The fallback removal does not affect NOMMU case because TCP_ZEROCOPY
> is gated on CONFIG_MMU.
>
> This really is a nice cleanup. It removes the need to pass the lock
> state back and forth to find_tcp_vma().
>
> Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
> Acked-by: Lorenzo Stoakes <ljs@kernel.org>
> Acked-by: Vlastimil Babka (SUSE) <vbabka@kernel.org>
> Tested-by: syzbot@syzkaller.appspotmail.com
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
> Cc: Vlastimil Babka <vbabka@kernel.org>
> Cc: Shakeel Butt <shakeel.butt@linux.dev>
> Cc: linux-mm@kvack.org
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Arve Hjønnevåg <arve@android.com>
> Cc: Todd Kjos <tkjos@android.com>
> Cc: Christian Brauner <christian@brauner.io>
> Cc: Carlos Llamas <cmllamas@google.com>
> Cc: Alice Ryhl <aliceryhl@google.com>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: David Ahern <dsahern@kernel.org>
> Cc: netdev@vger.kernel.org
> Signed-off-by: Suren Baghdasaryan <surenb@google.com>
> ---
> net/ipv4/tcp.c | 31 +++++++++----------------------
> 1 file changed, 9 insertions(+), 22 deletions(-)
>
> diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
> index 455441f1b694..62defe70f3ce 100644
> --- a/net/ipv4/tcp.c
> +++ b/net/ipv4/tcp.c
> @@ -2167,27 +2167,18 @@ static void tcp_zc_finalize_rx_tstamp(struct sock *sk,
> }
>
> static struct vm_area_struct *find_tcp_vma(struct mm_struct *mm,
> - unsigned long address,
> - bool *mmap_locked)
> + unsigned long address)
> {
> - struct vm_area_struct *vma = lock_vma_under_rcu(mm, address);
> + struct vm_area_struct *vma = vma_start_read_unlocked(mm, address);
>
> - if (vma) {
> - if (vma->vm_ops != &tcp_vm_ops) {
> - vma_end_read(vma);
> - return NULL;
> - }
> - *mmap_locked = false;
> - return vma;
> - }
> + if (!vma)
> + return NULL;
>
> - mmap_read_lock(mm);
> - vma = vma_lookup(mm, address);
> - if (!vma || vma->vm_ops != &tcp_vm_ops) {
> - mmap_read_unlock(mm);
> + if (vma->vm_ops != &tcp_vm_ops) {
> + vma_end_read(vma);
> return NULL;
> }
> - *mmap_locked = true;
> +
> return vma;
> }
>
> @@ -2208,7 +2199,6 @@ static int tcp_zerocopy_receive(struct sock *sk,
> u32 seq = tp->copied_seq;
> u32 total_bytes_to_map;
> int inq = tcp_inq(sk);
> - bool mmap_locked;
> int ret;
>
> zc->copybuf_len = 0;
> @@ -2233,7 +2223,7 @@ static int tcp_zerocopy_receive(struct sock *sk,
> return 0;
> }
>
> - vma = find_tcp_vma(current->mm, address, &mmap_locked);
> + vma = find_tcp_vma(current->mm, address);
> if (!vma)
> return -EINVAL;
>
> @@ -2315,10 +2305,7 @@ static int tcp_zerocopy_receive(struct sock *sk,
> zc, total_bytes_to_map);
> }
> out:
> - if (mmap_locked)
> - mmap_read_unlock(current->mm);
> - else
> - vma_end_read(vma);
> + vma_end_read(vma);
> /* Try to copy straggler data. */
> if (!ret)
> copylen = tcp_zc_handle_leftover(zc, sk, skb, &seq, copybuf_len, tss);
prev parent reply other threads:[~2026-09-01 7:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 20:30 [PATCH v7 0/5] mm: Unconditional per-VMA locks and cleanups Suren Baghdasaryan
2026-08-31 20:30 ` [PATCH v7 1/5] mm: Make per-VMA locks available universally Suren Baghdasaryan
2026-09-10 10:09 ` David Hildenbrand (Arm)
2026-09-10 14:50 ` Suren Baghdasaryan
2026-09-10 15:20 ` David Hildenbrand (Arm)
2026-08-31 20:30 ` [PATCH v7 2/5] binder: Make shrinker rely solely on per-VMA lock Suren Baghdasaryan
2026-08-31 20:30 ` [PATCH v7 3/5] mm: Add RCU-based VMA lookup helper that waits for writers Suren Baghdasaryan
2026-08-31 20:30 ` [PATCH v7 4/5] binder: Remove mmap_lock fallback Suren Baghdasaryan
2026-08-31 20:30 ` [PATCH v7 5/5] tcp: Remove mmap_lock fallback path Suren Baghdasaryan
2026-09-01 7:37 ` Paolo Abeni [this message]
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=3e84c09f-d760-41e9-a99f-0d86239b5ebd@redhat.com \
--to=pabeni@redhat.com \
--cc=Liam.Howlett@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=aliceryhl@google.com \
--cc=arve@android.com \
--cc=christian@brauner.io \
--cc=cmllamas@google.com \
--cc=dave.hansen@linux.intel.com \
--cc=davem@davemloft.net \
--cc=david@redhat.com \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=jannh@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ljs@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=shakeel.butt@linux.dev \
--cc=surenb@google.com \
--cc=syzbot@syzkaller.appspotmail.com \
--cc=tkjos@android.com \
--cc=vbabka@kernel.org \
--cc=willy@infradead.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 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.