From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f73.google.com (mail-wm1-f73.google.com [209.85.128.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8AAA53DB96B for ; Tue, 7 Jul 2026 10:29:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783420151; cv=none; b=uZXN3JOhOemGiF9PmK67uQTwryKOWmM63rDznjRSNcKrZAclg5IuwZ89X6p3oAalP0V8AaILJDf362RqW21Z5ognI4hi+irsJRA+CAbWj8lCRp09DFVNfDNU4/woxCXumHGXJmZadVA9e2hGU+bJoiwf1VL1gCyqL6X7L/asu/Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783420151; c=relaxed/simple; bh=d9uo4Ov6IB4poq5LyLqx4MVAIcepLANVzyDdH34u4Qg=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=mC5A0V4Tw1at4GyYBWoejreSh2bKUa8V2YlgDJ+FNa4jAuQFiR8HMqe2wKGHpH6qVcQN/Uj+2cq+SJWnxCIYsDVhWL5jymF3qpIGgYIT/cz5CzttE2ak4ftY8DHV4ChWLoQpVzRvCp55ipo1RAuOz9DMa3nA0HFZ42xP2mpEzxY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--aliceryhl.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=su+l1fmJ; arc=none smtp.client-ip=209.85.128.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--aliceryhl.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="su+l1fmJ" Received: by mail-wm1-f73.google.com with SMTP id 5b1f17b1804b1-493ae2a6a72so34921485e9.0 for ; Tue, 07 Jul 2026 03:29:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1783420145; x=1784024945; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=TJWJ4esPjYUB4cc/xhqnzZmWu+Yj9IGbAXKLMFjEL9U=; b=su+l1fmJPEvhJ47Ky0+zvfRgQwBzULwLlqGhFJVpZcGUVA2qjZg9pl18WHQ36jopLs xz7LEK9u2geKJAONlOgtGbHrVAhOmdFkzp4RygEAriJwDA3QtsqezHwbQ5RDhGNf9vKY j9cr8LLhOmKt6lOIDAhKnv5FG1N2l9e7CBNwmjJWFnt5jPvEwqRn/QkWcNR9OIeu7AOD fRfR28m3cB8yXSi9uw1Q7ZAApoRZ6bXcPLZp/VKx6T5AabO+eMRJ6FuV8k4wcj6prbIQ 2Fa68oPXEsfPwhFzaFB6cK4a7/V21BxtQjYLiqjs8qCpL4Ekry6gDbppOQFZ397HqcZ9 lRlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783420145; x=1784024945; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=TJWJ4esPjYUB4cc/xhqnzZmWu+Yj9IGbAXKLMFjEL9U=; b=nvHE/axMdG4XCQlDFe7v4IVD2OtuWcsH1BxZU/Oy1ZfxRHXqp51x9sFzt76wimgx+R nd1rLVXJ9fRJ6cbxsLPcUCOtab2Z+7g0l0CqGAm94uJrPRZcHP+U+wAqlpX88F76jvrX HXdjs2sF+4qNg1GReBfVQie/P8RhqbkcmWVI/16jNEmibcEMFGNQfBLF+pHiOTs5G1Vm Mtg5ewES2wtdRj/Y4BhR9GX3lauZ5Q7WFpS5TvlAD4wXEEqiSbhz1e8jMHdCA9PAuaRG qh83S7k2Nom+iCHJnpRkOrSSS5Mz0FVil+3OZloh6AsL0T+eZYPDF1bc6b0kn/e21Xs1 zH/g== X-Forwarded-Encrypted: i=1; AHgh+RoybNIiDBMicvQdYePZG5K8oze8Afv8qSajxPHSHuwrZDO0WSiAoefzhkRrKnypJVc8VtjV1rreTkP19c4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy19SchU5uLrBL2W9Do8wf9t5XSaH9ZbYSrB3fK2NMAbgiEqUsm rdKvk5UzuJgnkjf+ITlFuzj/bTzzkKvSPQ8CcbpS/n9CzSrGF/Tp8pseNm8a5tEqSyfDYxr3zH+ A7v2KITU3SPocVu6v1w== X-Received: from wmqe6.prod.google.com ([2002:a05:600c:4e46:b0:493:bd80:da9b]) (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:19cc:b0:492:5145:f054 with SMTP id 5b1f17b1804b1-493df0930a6mr53083905e9.26.1783420145097; Tue, 07 Jul 2026 03:29:05 -0700 (PDT) Date: Tue, 07 Jul 2026 10:28:53 +0000 In-Reply-To: <20260707-binder-noderefs-spin-v4-0-7c3c8bc16339@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260707-binder-noderefs-spin-v4-0-7c3c8bc16339@google.com> X-Developer-Key: i=aliceryhl@google.com; a=openpgp; fpr=49F6C1FAA74960F43A5B86A1EE7A392FDE96209F X-Developer-Signature: v=1; a=openpgp-sha256; l=1258; i=aliceryhl@google.com; h=from:subject:message-id; bh=d9uo4Ov6IB4poq5LyLqx4MVAIcepLANVzyDdH34u4Qg=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBqTNTqxiDDl2Th358yp5g/ZfXTmA1c/6R1sMupu lcDYLLqqFiJAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCakzU6gAKCRAEWL7uWMY5 RgFUD/9N3SHUyo1n2ZPmqIJL4YMTAAPBEKOGWiB/o24RKZGkL6Bh3f6Goa+spVc6tHg8O3rpo2V hMtLSulPFS7RFtpc4y6zzRgJn8MYDKdaYgypKMYQ89vqLn2GMEoBFcgEN3zCOIzvM7UckmOlbRP VM6WIitl2kEae0kzGWM9zgc4NrQ5qWFH+2TDMU/swBRSfRfykEy+h3OGpzTd39nK0Hd199NeDP4 iwCAqWQvkoWa6T+QWfsvEVs1GT1GjMgzEJI+y19hP6X10ZyyF47Cf/wfs7oENJPm3cEDIXB/usM wBu5zLSgeeiQ1EZFN+p+edq1XopN98jo0eDrf61twJC+GsdKnTRCrSqPes1xDi5UYUJnr+AFWlG xPX+IgZVYM6vFe9BvQtOf9hjwt3PCzm+rKkP0RE20oAcFmDOsIT0mR+YfYWU5Ccqz3fDqOjsK8I Fh9UCCwg4ShlHtuUvtFPQdByjsejsmZqSsn30y2HcVuak8u0CdffCHZyZeuQbv/klUYaJiBv5jV /20sR151uyZbqADhjrk+TJQ3Dy88vf2akaTII54bLf0NJbxU4bBJ6ALB5yuequOSKLG+wUbPLwe iVODejqpzADmvfsyeMZtOIn+6Oe0i0DkhDO9n2XRqJMZfUP1pvnP8gn8Ey13It6seFQQrKWy9Uv BmQsP/wTVb1idXQ== X-Mailer: b4 0.14.3 Message-ID: <20260707-binder-noderefs-spin-v4-3-7c3c8bc16339@google.com> Subject: [PATCH v4 3/6] rust_binder: schedule NodeDeath outside of node_refs lock From: Alice Ryhl To: Greg Kroah-Hartman , Carlos Llamas Cc: Miguel Ojeda , Boqun Feng , Gary Guo , "=?utf-8?q?Bj=C3=B6rn_Roy_Baron?=" , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Matthew Maurer , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" There's no reason to hold the node_refs lock while scheduling the NodeDeath to the thread todo list, so don't. The call to set_cleared() is kept under the lock so that the state update is kept atomic. Reviewed-by: Matthew Maurer Signed-off-by: Alice Ryhl --- drivers/android/binder/process.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/android/binder/process.rs b/drivers/android/binder/process.rs index da84c0072d46..505e0bc52748 100644 --- a/drivers/android/binder/process.rs +++ b/drivers/android/binder/process.rs @@ -1303,7 +1303,10 @@ pub(crate) fn clear_death(&self, reader: &mut UserSliceReader, thread: &Thread) // Update state and determine if we need to queue a work item. We only need to do it when // the node is not dead or if the user already completed the death notification. - if death.set_cleared(false) { + let should_schedule = death.set_cleared(false); + drop(refs); + + if should_schedule { if let Some(death) = ListArc::try_from_arc_or_drop(death) { let _ = thread.push_work_if_looper(death); } -- 2.55.0.rc2.803.g1fd1e6609c-goog