From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f73.google.com (mail-wr1-f73.google.com [209.85.221.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 9C9163DFC67 for ; Tue, 9 Jun 2026 09:33:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780997605; cv=none; b=kBdonIpXViiznvnIrQJhqH4QfyxnQhcfaY+xXiZDo6ft1GIUr7er3uhWDH04GNofttOKUWSIjlDN9Wn0uPyAh4BxT/3x14/19z3CFOZkWhzyQOxd2XwTCyPKd1rzhaftz9eLFhcDzT+OnBgLX9hdcXY3sl3yTWPqzBJpFDt1UbI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780997605; c=relaxed/simple; bh=i4lUMOvBW4IInX/kaLGSZGsHAq076tqR3LS3nXwBfz8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=rHKWvTfW55G+TdaTl5bERK08UZb5PuaTx3AlQZOI47EJ/5UgiavMks69xBmdwVjFP6LMVBRZUvX5JacW+8Q5d6DIPRWAFAd9qS3lIRSoluCnCpuXrcYcSjHyi5nUI2P3RWeoRW/27nGz1sxvQlhhQqFGCLbdIwxKWJ76+OxoFys= 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=pvcHhd7N; arc=none smtp.client-ip=209.85.221.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="pvcHhd7N" Received: by mail-wr1-f73.google.com with SMTP id ffacd0b85a97d-45efa7755faso2035233f8f.1 for ; Tue, 09 Jun 2026 02:33:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780997602; x=1781602402; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=QNWfi/EH6aA6qx0F+mbUFEPAfqMITAcxm9jr2u8jXw8=; b=pvcHhd7NFgi2VjIPZfJoXRkMMbce+Ddc1KBoOglkQlZDcHcL7SpbtDTGMDU6xSdo4B pc4DXOxgrSM5ICGZLpfsOYr4C1TDYJthvU10jrceBRPrvW+nKY/2v5EDtwBpkRSAZIeU vCHf30oeah1bPxfGECtkJfR3QiXgRvjNajgMlZZIod/SYyz9aMGeUQAabJ8ROpLV7gJc GcxdjIA2QWTthR1MyFtP7P1/HsSitAgJa8yfBtOqr1kNpdczUvk5ac98JFUxrvM18IQH WHywl3zD9WcrZtIP4Q/6Nc1Wj198skmJHGmd7Zv8Bx6S1H985HkN03HdVve4RbTvxmq7 LAQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780997602; x=1781602402; h=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; bh=QNWfi/EH6aA6qx0F+mbUFEPAfqMITAcxm9jr2u8jXw8=; b=rYp8jMNZbewpVr4mm0Rb7ub1FuT5NuazltId8XTWirwZHCKALAxZRWPgH1BuCEHVcq C1FjHSkPZvogIZubAyw1/Mq5lDJ1zzyHfd0D5MrmiYtOccyAynW8igwWLWms9MIZ/TAQ Uq9sMTueM/HWQn0KRVvTDztnTQD1n26RjHMrNtZqe0leUiaR8OLnDD0J0vW9HbcYLK3Y XsRBjZmQjkNT5biPs3kw5K5nXHiPttOfC8did4pPbfVNaZrb6Qcxn8q7+/7p/yyfCqoo wUkRICbTR47e9eUhuUyqn6puG3zL6ifhKDM7zGrPz1Mkuo+3IrfYGxKIMsfxMOnS5HsW YEDQ== X-Forwarded-Encrypted: i=1; AFNElJ9hkX6aAR6FBBOW38VQ+Q8+xExweUaH30+KaB+OvXYKAszAmm8kcArNWInczG+Ky7k3xtX+mN+37k9LeQg=@vger.kernel.org X-Gm-Message-State: AOJu0YyuT5dtvYSix6EXwlCZDDm5aWB3OtCt4fpyXPgVUKQDxDMhoo2O bZhk/jt5vKp2ty9ENxQf6ypONdvziQpjfgXoXF3ymSKkVVsH7HbFQiO7Jg5SQRmWtRGFlkcCyo8 Y5hC90T95zPSEF72New== X-Received: from wrwd3.prod.google.com ([2002:a5d:6443:0:b0:45e:f50a:d950]) (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by 2002:a5d:5f44:0:b0:45e:e1a4:c4c3 with SMTP id ffacd0b85a97d-460302fd190mr30210789f8f.15.1780997601699; Tue, 09 Jun 2026 02:33:21 -0700 (PDT) Date: Tue, 09 Jun 2026 09:33:09 +0000 In-Reply-To: <20260609-binder-noderefs-spin-v2-0-eafde2ff376c@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260609-binder-noderefs-spin-v2-0-eafde2ff376c@google.com> X-Developer-Key: i=aliceryhl@google.com; a=openpgp; fpr=49F6C1FAA74960F43A5B86A1EE7A392FDE96209F X-Developer-Signature: v=1; a=openpgp-sha256; l=1205; i=aliceryhl@google.com; h=from:subject:message-id; bh=i4lUMOvBW4IInX/kaLGSZGsHAq076tqR3LS3nXwBfz8=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBqJ93aRDGd/bmbVtsJ69BD/2ps0Ok8sLklu5grY UuefjNX7gyJAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCaifd2gAKCRAEWL7uWMY5 Rnd/D/wMUdMHXB51jJ6C/wZLcANpGQQ6gKzNzAVuGMTGp51VuTPF/Zulgm2OmxMlepAltm4gnrx H5G9bkcjprFFHC3pZt367RFb6nOSgJh/4fZTrCmAJXg/s6O2FmshWr2X/2/tMZiD0BsMr1Ul7AS HKC9eBvDsQGLbbkzrfx0Fs+YpPGLTyOW0p1lrXWIVl0L2lZKs15o/ywNSY/f20/0Fl/uTEoYeE/ pEX0IUHmtouA9EhkhqNkuIFbf/jLgTZqMeaxb50/8zk46E6J3T+EOuuvqR4EiSDp0fFqwNGWsIg Zi4M2TSZNXnv9AvHSDGlyH1GcA2xSZH65Dd3/yGRITTcL+VzrkkJFrEmP+MYpCf/WLvBNYghLPG mTM2qd/RguK9ORomGaePfSIQnpHhbrnXBgQHzpJ2OFWTx0ERdWUM+H9WkP6/l8hBA7kgzCHPYd5 KNP+ogFzpsJ9FwtbSm+8RjgaeA2hcg1iPEtepV6fqXecprief2Oh9oh/c0H2cF+2h7tY2OvdSP7 rfa94Bf+QNmESX72xS9eduk37bvGy8tzBu6RYi4Bv01yKZwFcZ3hLdwhu5vLWnHYhn1yC47nsdJ YXu/Jew0ip3Cove13M5p08riEgG783YzhHXLqKqLXPESGXSCG0QT4HLgnpOoKL4PfTGFaM6tqyj rVaEqSkQsrqvv0Q== X-Mailer: b4 0.14.3 Message-ID: <20260609-binder-noderefs-spin-v2-3-eafde2ff376c@google.com> Subject: [PATCH v2 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 , 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. 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 f4f4d45e1ab7..a8836cb8b8cc 100644 --- a/drivers/android/binder/process.rs +++ b/drivers/android/binder/process.rs @@ -1289,7 +1289,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.54.0.1064.gd145956f57-goog