public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org, lee@kernel.org
Cc: Sasha Levin <sashal@kernel.org>
Subject: Re: [PATCH v6.6 20/26] af_unix: Replace garbage collection algorithm.
Date: Wed, 21 May 2025 22:04:56 -0400	[thread overview]
Message-ID: <20250521181718-2d01e73e74af8be1@stable.kernel.org> (raw)
In-Reply-To: <20250521144803.2050504-21-lee@kernel.org>

[ Sasha's backport helper bot ]

Hi,

Summary of potential issues:
ℹ️ This is part 20/26 of a series
⚠️ Found follow-up fixes in mainline

The upstream commit SHA1 provided is correct: 4090fa373f0e763c43610853d2774b5979915959

WARNING: Author mismatch between patch and upstream commit:
Backport author: Lee Jones<lee@kernel.org>
Commit author: Kuniyuki Iwashima<kuniyu@amazon.com>

Status in newer kernel trees:
6.14.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)

Found fixes commits:
041933a1ec7b af_unix: Fix garbage collection of embryos carrying OOB with SCM_RIGHTS

Note: The patch differs from the upstream commit:
---
1:  4090fa373f0e7 ! 1:  d7a21a2945e50 af_unix: Replace garbage collection algorithm.
    @@ Metadata
      ## Commit message ##
         af_unix: Replace garbage collection algorithm.
     
    +    [ Upstream commit 4090fa373f0e763c43610853d2774b5979915959 ]
    +
         If we find a dead SCC during iteration, we call unix_collect_skb()
         to splice all skb in the SCC to the global sk_buff_head, hitlist.
     
    @@ Commit message
         Acked-by: Paolo Abeni <pabeni@redhat.com>
         Link: https://lore.kernel.org/r/20240325202425.60930-15-kuniyu@amazon.com
         Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    +    (cherry picked from commit 4090fa373f0e763c43610853d2774b5979915959)
    +    Signed-off-by: Lee Jones <lee@kernel.org>
     
      ## include/net/af_unix.h ##
     @@ include/net/af_unix.h: static inline struct unix_sock *unix_get_socket(struct file *filp)
    @@ net/unix/garbage.c: static void unix_walk_scc_fast(void)
     -	 * receive queues.  Other, non candidate sockets _can_ be
     -	 * added to queue, so we must make sure only to touch
     -	 * candidates.
    +-	 *
    +-	 * Embryos, though never candidates themselves, affect which
    +-	 * candidates are reachable by the garbage collector.  Before
    +-	 * being added to a listener's queue, an embryo may already
    +-	 * receive data carrying SCM_RIGHTS, potentially making the
    +-	 * passed socket a candidate that is not yet reachable by the
    +-	 * collector.  It becomes reachable once the embryo is
    +-	 * enqueued.  Therefore, we must ensure that no SCM-laden
    +-	 * embryo appears in a (candidate) listener's queue between
    +-	 * consecutive scan_children() calls.
     -	 */
     -	list_for_each_entry_safe(u, next, &gc_inflight_list, link) {
    +-		struct sock *sk = &u->sk;
     -		long total_refs;
     -
    --		total_refs = file_count(u->sk.sk_socket->file);
    +-		total_refs = file_count(sk->sk_socket->file);
     -
     -		WARN_ON_ONCE(!u->inflight);
     -		WARN_ON_ONCE(total_refs < u->inflight);
    @@ net/unix/garbage.c: static void unix_walk_scc_fast(void)
     -			list_move_tail(&u->link, &gc_candidates);
     -			__set_bit(UNIX_GC_CANDIDATE, &u->gc_flags);
     -			__set_bit(UNIX_GC_MAYBE_CYCLE, &u->gc_flags);
    +-
    +-			if (sk->sk_state == TCP_LISTEN) {
    +-				unix_state_lock_nested(sk, U_LOCK_GC_LISTENER);
    +-				unix_state_unlock(sk);
    +-			}
     -		}
     -	}
     -
---

NOTE: These results are for this patch alone. Full series testing will be
performed when all parts are received.

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.12.y       |  Success    |  Success   |

  reply	other threads:[~2025-05-22  2:05 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-21 14:45 [PATCH v6.6 00/26] af_unix: Align with upstream to avoid a potential UAF Lee Jones
2025-05-21 14:45 ` [PATCH v6.6 01/26] af_unix: Return struct unix_sock from unix_get_socket() Lee Jones
2025-05-22  2:03   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 02/26] af_unix: Run GC on only one CPU Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 03/26] af_unix: Try to run GC async Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 04/26] af_unix: Replace BUG_ON() with WARN_ON_ONCE() Lee Jones
2025-05-22  2:08   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 05/26] af_unix: Remove io_uring code for GC Lee Jones
2025-05-22  2:07   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 06/26] af_unix: Remove CONFIG_UNIX_SCM Lee Jones
2025-05-22  2:03   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 07/26] af_unix: Allocate struct unix_vertex for each inflight AF_UNIX fd Lee Jones
2025-05-22  2:08   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 08/26] af_unix: Allocate struct unix_edge " Lee Jones
2025-05-22  2:06   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 09/26] af_unix: Link struct unix_edge when queuing skb Lee Jones
2025-05-22  2:05   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 10/26] af_unix: Bulk update unix_tot_inflight/unix_inflight " Lee Jones
2025-05-22  2:03   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 11/26] af_unix: Iterate all vertices by DFS Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 12/26] af_unix: Detect Strongly Connected Components Lee Jones
2025-05-22  2:06   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 13/26] af_unix: Save listener for embryo socket Lee Jones
2025-05-22  2:08   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 14/26] af_unix: Fix up unix_edge.successor " Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 15/26] af_unix: Save O(n) setup of Tarjan's algo Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 16/26] af_unix: Skip GC if no cycle exists Lee Jones
2025-05-22  2:07   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 17/26] af_unix: Avoid Tarjan's algorithm if unnecessary Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 18/26] af_unix: Assign a unique index to SCC Lee Jones
2025-05-22  2:07   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 19/26] af_unix: Detect dead SCC Lee Jones
2025-05-22  2:05   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 20/26] af_unix: Replace garbage collection algorithm Lee Jones
2025-05-22  2:04   ` Sasha Levin [this message]
2025-05-21 14:45 ` [PATCH v6.6 21/26] af_unix: Remove lock dance in unix_peek_fds() Lee Jones
2025-05-22  2:07   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 22/26] af_unix: Try not to hold unix_gc_lock during accept() Lee Jones
2025-05-22  2:07   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 23/26] af_unix: Don't access successor in unix_del_edges() during GC Lee Jones
2025-05-22  2:08   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 24/26] af_unix: Add dead flag to struct scm_fp_list Lee Jones
2025-05-22  2:05   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 25/26] af_unix: Fix garbage collection of embryos carrying OOB with SCM_RIGHTS Lee Jones
2025-05-22  2:04   ` Sasha Levin
2025-05-21 14:45 ` [PATCH v6.6 26/26] af_unix: Fix uninit-value in __unix_walk_scc() Lee Jones
2025-05-22  2:07   ` Sasha Levin
2025-05-29 12:26 ` [PATCH v6.6 00/26] af_unix: Align with upstream to avoid a potential UAF Greg KH

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=20250521181718-2d01e73e74af8be1@stable.kernel.org \
    --to=sashal@kernel.org \
    --cc=lee@kernel.org \
    --cc=stable@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