From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f74.google.com (mail-wr1-f74.google.com [209.85.221.74]) (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 0037E3E3DBE for ; Tue, 9 Jun 2026 09:33:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.74 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780997606; cv=none; b=NaG9wm3KDnbFQWC1sCyu4095LKNWOVNnJ0IwoDadSPvtWF3g437oO0nkusFjn6dlqveVEBo+8hT9eXUIwry8oeMYXQrwjW8EKEDZwGLMYAG798kqoZhjOkCQlJ1K0MGcksQCl0fe5AK10lIjRwC9Qwu9qTZCk53mujRURooz5yw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780997606; c=relaxed/simple; bh=k5OyUmvgzwfQoce0MXcCSkK8eKdCBFzMZYVZHbxSNss=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=sowc/A6iSIpfmxr9ch8gWacRb9c7PWscOT6J8pJ/dQSe1Tr6M5JLVFqN+tm5gmq8xt1lwByo0Z9Ax8ncZvGp/+d9MRBpQOM4qFcCUxLNMIQDvvljguRHwFtmzpbQgPU0bD2fiEcY3xX4NubNQ5cmLh4GS5TAN0MiECrhdrjohIA= 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=d2V4xMaT; arc=none smtp.client-ip=209.85.221.74 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="d2V4xMaT" Received: by mail-wr1-f74.google.com with SMTP id ffacd0b85a97d-45ef0af9517so2961719f8f.3 for ; Tue, 09 Jun 2026 02:33:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780997603; x=1781602403; 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=JSs0I7bRSPPwlvcDukxrz4wRY+Gjupfr/SkyGxTl4ww=; b=d2V4xMaTWUWjhTPdgqtyc2MlsRCsypYh+xX0PZDIG68pqY/DeUNgfAgzWtW7DDXnUU TP2GdUeduHQO1HR7nwhg6v80xMUYZ7NYOYpfuaR8ziXLAnDKDe3mhwSzwaPwTHmmA3Rm QBe+YRmh0D8/DjQk3B1n2tXA/rW35xhRIpDS6At2z6y4xEUYKNl61M58mjjQOFs2i7oh /h0fLKV0Kvk92p4dhKNm8WGl2cZhPzxODq3zjfsGwpWLRBRl4amUnFEdi1U5nNg9o5Y1 VL9gujL/F+Q6yalcZH7A4jN4nlp4POy/O4n7HLxH/p4T7F15LdUEQ1f1knUuICz6JDHJ Ysdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780997603; x=1781602403; 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=JSs0I7bRSPPwlvcDukxrz4wRY+Gjupfr/SkyGxTl4ww=; b=JkREr1i/pDYyUUNnnCNqVQVbdu5jZibjx8gfl4bqTpPpRiaflTy5TfwA8CdC2AKrES OTKQq5T8P3Lo9elakD1HAJvJwOsSA9ANaNXqs2CfbxP1MpFbHhuQcZyy8bUJhdUY6ZFc +RTFrVUWLSs3Pa6SCx4QlwT03Kwfwhs6u7Krb8tfMZTUC2zSCgSammkskgnYKAWddMkS QHpPuiuGPxbkA3p/uEWYJqGEincy+JQvRF1NYTHAW0BxL6cpiHqzDRTxFHv1mG9oKuBx 6pZZO1WqahwfVrCNgExrVGo+Iu2fSEZ1j/oyKcpvoOfPxdRtK6yG+/bnNVJIWPgSUgAU bPEQ== X-Forwarded-Encrypted: i=1; AFNElJ/N0e/tslcE26m3mxQeekB5bOCWlssHLKV1vF2a/CUO//G7bOm0GCmb6SQf/8GHTzrXuLejpvZGDUzJMTM=@vger.kernel.org X-Gm-Message-State: AOJu0YzmCqUVZXtXXaE60BHWrxuNIBT0a5+1afLgfFKqtojNykvY0f67 MJ+/g2d+AZtRni1oECCebZyXZIxMDbp/NoqCDAmJt0KB+GjtLpzhh++w2hzqvcYYC5owiD/7W2c 0FHJEOFROjSirOIT1Iw== X-Received: from wmbjh14.prod.google.com ([2002:a05:600c:a08e:b0:490:b646:6e97]) (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:620b:b0:48a:53ea:140b with SMTP id 5b1f17b1804b1-490c25cf45bmr332471605e9.28.1780997603167; Tue, 09 Jun 2026 02:33:23 -0700 (PDT) Date: Tue, 09 Jun 2026 09:33:10 +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=1566; i=aliceryhl@google.com; h=from:subject:message-id; bh=k5OyUmvgzwfQoce0MXcCSkK8eKdCBFzMZYVZHbxSNss=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBqJ93bhYm8KNxscigH+sbifvizx8Bzr16NqAsFg 32MBFL+l2GJAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCaifd2wAKCRAEWL7uWMY5 RjTbEAC60ETOd/Wp14fHqztO1iejb9N/bi5uPvVeLDLi1/M/808GV8/cMvIXdkNaopo+l+NsZ1s jI1OgW54LWtLQHcmvpJmg30LXv8Mm1zNEQ86TTpIwDHTowE31w2ssYEvt9J9AB8IcA6KV5m5kNc t1t0KxwW8RN1rbs8r/fbAkHDdK2G+6oKmBq7269CL9/PJ2VZyODvm+tbIvyUGSdnBhtaWAe+uwZ oQXkgOkoRiL7InZycUxOj43rIUgkiYx4IBMzE7lQlWo0D1mfDdY9fxTWE7JWEEb91YXRRWU3gp+ tVpdJ17bDcQ+SCijlDLQc7A4VTU7mtD9gKklToaNKhPV241b0E6/+A+lRsKQRnBxMEmaslq4H8Q WNrdVggzWb7ffHYvdwdQZRUPiWddYhtRGGFm1+R+1G896n577Mk9jL2sUJwcid7i5VilZAwIIeh rDplS4yqT8red+2es+H+t6KLV1W2js1YT/Vgr4D64rNNXnvO7FvzaLGc/inZLAHQ4lkPTk49P6j MdJKTHZdtgMssNEli7C7o6PfhCDyGajt3XTEBw3JaHEpL48VZKdYy8FzpQ6o9AhhCK//no4GXkE 6d/N92xsMXBpS1KMTX13GweNLfl8nAPtrF02usCaOgY76PAN0SggGN1OqQ7DbkE41gTfYjObZhq XQPCE9BywU538fA== X-Mailer: b4 0.14.3 Message-ID: <20260609-binder-noderefs-spin-v2-4-eafde2ff376c@google.com> Subject: [PATCH v2 4/6] rust_binder: keep NodeDeath in NodeRefInfo during process cleanup 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" By keeping the NodeDeath inside the NodeRefInfo structure during process cleanup, we avoid running its destructor under the node_refs lock. It is still dropped shortly thereafter when the entire rbtree holding the NodeRefInfo objects is dropped, but that occurs outside of the lock. Signed-off-by: Alice Ryhl --- drivers/android/binder/process.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/android/binder/process.rs b/drivers/android/binder/process.rs index a8836cb8b8cc..c8e9fd0d0472 100644 --- a/drivers/android/binder/process.rs +++ b/drivers/android/binder/process.rs @@ -1375,13 +1375,11 @@ fn deferred_release(self: Arc) { // SAFETY: We are removing the `NodeRefInfo` from the right node. unsafe { info.node_ref2().node.remove_node_info(info) }; - // Remove all death notifications from the nodes (that belong to a different process). - let death = if let Some(existing) = info.death().take() { - existing - } else { - continue; - }; - death.set_cleared(false); + // Clear death notifications from the nodes (that belong to a different process). + // No need to remove them from `info` as we clear info below. + if let Some(death) = info.death().as_ref() { + death.set_cleared(false); + } } // Clean up freeze listeners. -- 2.54.0.1064.gd145956f57-goog