From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) (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 64FD13BE659 for ; Wed, 22 Jul 2026 09:16:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784711782; cv=none; b=V+EkG6MSPSfEXCuTZdU1v5E+Ub1EKdwQje8o/+6J5ve4Qr+20pDMbMSBFq2qV6OVxUgYZoNs3Gh9hNgfjWozG8FlcCkDEQc04tINYtZ6llnIiEqV7Cmg9GlsmIXi2BTM9PIb5LoO0SVvcGa9QZiWC5QsP2r1t83EwMF4dWgIzi4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784711782; c=relaxed/simple; bh=2b6L2eXi0rZnUWrbz0nUqiyHf39Qr9F7UnkV1u9przE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=g9LbfaY7dzCfGAb4DKEn0DHQ+cLUrqudEOL+4UDK194Z9/4VGJb5FbVKZRzMIpvD4tOUxXrXzOk2eV0S6RSp/oqBaoK218IrWHPiLDNxGZafx1G1YBLGVl144g4Ecs1Lx7NMYniy/d4u+mIGnS+dSlZL1MzbR2DgyQhZ7tCJnzg= 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=RkGtCW52; arc=none smtp.client-ip=209.85.128.72 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="RkGtCW52" Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-495474a5fbcso63076665e9.1 for ; Wed, 22 Jul 2026 02:16:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1784711777; x=1785316577; 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=HHBSei75Jv7bmuOghRwfWU/0mZN/rXuNg2tLxsZDtvs=; b=RkGtCW52Lh97+/lqJjt2q8htzOHbLIaMTcE77s/okbcJo2zxSS4lpjwcuMhNz6pqJd nUm4zVLIwOewVmROGJSiMbFgDfiA2QQ25fwv2ycWx/D0bowgFjsPsAvdhQm+YVM+iP5z PtDD2SrtQrjlJiBHFTovLJFyOra+c3sRT0153dzBKgQ6ZcJ5D1ahimEyeHc0Fx/D7uAV VHttnOZCYegD9ZjXMiVSg0EoDBxosnvsOvMebKOp1RJkx9jdu1UqJ1X/26f6N5KESr+a TiD3pVZA0IRF2GIIBAiVrKtEevzLJAtG7r4pQdbRlWNfszVuZAproZEFupss7zBp7pXm UHEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784711777; x=1785316577; 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=HHBSei75Jv7bmuOghRwfWU/0mZN/rXuNg2tLxsZDtvs=; b=SZNnr517Br+RuOWeDX3eu+p1rqLqueujml+HM0ZiR4XEyWwpDsVq16FOBQmWhbaeDO YJP3DVuLB8J3/YfTgqvwvMidwObRICESTjG408AvA6Nc2LmRsUSCdFzZuB6eIrCsTlqO MWYK6e8l/3iz5vEsyKcFAJnuEAZQpj1e8jjQFsOTMiADCoJXtoDXC5k2C9gPtogkYmWY Mc0SdDO+yzCcyFwj9q7a3K4GnhC+4VvyfRcrwdJYg9GxL4guImzX5u9dzY1vPwgExBkb aGfCUUtQkfGtJkVwkdcmHyioVtSwEUC//rhnJnMKr3KDJ+0+LDxsF3EVa7FQemzzf1ql 8/Uw== X-Forwarded-Encrypted: i=1; AHgh+RqwrpFtVb/7AEWLTvb1B4Z8O6VCUFMoz20iOA1db/Uiq8C/Nznq7RwspY5o7PYLbMV7aXg1S1dQ0z+VGck=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6slTIGv4lgvuzML33ekv44xB8i6c/VqG2dOaZTqGtw+PyU+lS veBmJzh9LnvcMQ2ifiTX6c3RWgQuxI/fhxyTlYGUKPC4aMcGZAwXhwa38dk5g3zVj4xdYSDsY0t 4bzwFGynwGH/ZIcJZnw== X-Received: from wmbhi18.prod.google.com ([2002:a05:600c:5352:b0:495:5422:15e3]) (user=aliceryhl job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3512:b0:495:4572:21af with SMTP id 5b1f17b1804b1-4954a3ef7dbmr238679855e9.9.1784711777195; Wed, 22 Jul 2026 02:16:17 -0700 (PDT) Date: Wed, 22 Jul 2026 09:16:04 +0000 In-Reply-To: <20260722-setonce-populate-v1-0-fa7455c26c42@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260722-setonce-populate-v1-0-fa7455c26c42@google.com> X-Developer-Key: i=aliceryhl@google.com; a=openpgp; fpr=49F6C1FAA74960F43A5B86A1EE7A392FDE96209F X-Developer-Signature: v=1; a=openpgp-sha256; l=1836; i=aliceryhl@google.com; h=from:subject:message-id; bh=2b6L2eXi0rZnUWrbz0nUqiyHf39Qr9F7UnkV1u9przE=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBqYIpas4y/7rCjWTJa1nAy74sXllLbFrMDrj0Ke vy4i59SgbuJAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCamCKWgAKCRAEWL7uWMY5 Rg83D/91oaUidxNFz+BG7bXj+iXTwCt0prL+qV9Z7JDRS4YVNLFzSMLysmQnwkAs89FOGktC1bX /LF47L1f+xCN7sQnmt52IHGocGVMMX8ntn8IRGVYfyzAK5vU3UD9UJMgOkopKOM/jmHyk1yi/Ez /x316krIN2LBbvT31uAdrWfdshY0UxPyJDd58Rucq4jox6877lYKvjXDQ6Krnyah77n/TrBM5YE pueY2ruXcv7io/gR9bbzzMmhyWm3kddrl/72hIiKZ+5NgdPEo9zhTBsFZl1v9957VcJsLZxVvYw /Ztvs3ZgG2rhYsGqZnUEmEDJhxwqnkB7X3l5o/5YRF8byR+JxcCAiilGgSzfEA6UBF4Cd+JnxZz WbL3MRgOUY99fMXLEisT/jtUrbPEY1KkdiQhnh7MgOdeZ3bukpp7+spkRlJ/v2R1V8hAdPR+08G bFxjIX/tM4/Y8POiwXPJcRHPqz7qk9uRgG6stA6kuN1/aHXs41H8uzk1HuCMy8divuBw2ysSt3B bazrD+E9Pr4eBVw/iMpyaJYPscnjw3uOnNcw1ljY2KAAmpHxCqGO+Kb40Yumnfg29AwJvqAVlDF IyAODTBskJo4ITfA5eaNB1GcLEhLSqVTPHaO2U3IhHdqf6n8FYJe0XIu9fD0voijdMnT+NbGI/M 1gpBYqrmeRvAKhg== X-Mailer: b4 0.14.3 Message-ID: <20260722-setonce-populate-v1-3-fa7455c26c42@google.com> Subject: [PATCH 3/3] rust_binder: use SetOnce::try_get_or_populate() From: Alice Ryhl To: Boqun Feng , Gary Guo , Lyude Paul , Daniel Almeida , "=?utf-8?q?Onur_=C3=96zkan?=" , Greg Kroah-Hartman , Carlos Llamas Cc: Luis Chamberlain , Petr Pavlu , Daniel Gomez , Sami Tolvanen , Aaron Tomlin , Miguel Ojeda , "=?utf-8?q?Bj=C3=B6rn_Roy_Baron?=" , Benno Lossin , Andreas Hindborg , Trevor Gross , Danilo Krummrich , Tamir Duberstein , Alexandre Courbot , linux-modules@vger.kernel.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Alice Ryhl Content-Type: text/plain; charset="utf-8" Since this method has just been added, use it instead of open coding the loop. This also has the side effect of dropping the PollCondVarBox outside of the node_refs lock when two threads initialize it in parallel. Suggested-by: Boqun Feng Link: https://lore.kernel.org/all/alJHCkMIcnXYPNoJ@tardis.local/ Signed-off-by: Alice Ryhl --- drivers/android/binder/process.rs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/drivers/android/binder/process.rs b/drivers/android/binder/process.rs index d486bf7c0b8a..5f8779badd3d 100644 --- a/drivers/android/binder/process.rs +++ b/drivers/android/binder/process.rs @@ -1793,21 +1793,12 @@ pub(crate) fn poll( table: PollTable<'_>, ) -> Result { let thread = this.get_current_thread()?; - { - let poll = loop { - if let Some(poll) = this.poll.as_ref() { - break poll; - } - let poll = PollCondVarBox::new(c"Process::poll", kernel::static_lock_class!())?; - // Reuse our existing lock to synchronize callers initializing. - let guard = this.node_refs.lock(); - let _ret = this.poll.populate(poll); - drop(guard); - }; + let poll = this.poll.try_get_or_populate(&this.node_refs, || { + PollCondVarBox::new(c"Process::poll", kernel::static_lock_class!()) + })?; + table.register_wait(file, poll); - table.register_wait(file, poll); - } let (from_proc, mut mask) = thread.poll()?; if mask == 0 && from_proc && !this.inner.lock().work.is_empty() { mask |= bindings::POLLIN; -- 2.55.0.229.g6434b31f56-goog