[PATCH v2 1/3] rust_binder: never return 0 from next_debug_id
From: Alice Ryhl
Date: Wed Sep 30 2026 - 12:12:58 EST
Retry if fetch_add returns 0 in next_debug_id() so that valid debug IDs
start at 1 and 0 is never assigned, even if NEXT_DEBUG_ID wraps around.
This allows 0 to be used as a sentinel for an absent or uninitialized
debug_id (such as in TransactionInfo::to_node_debug_id and in
transaction log entries).
Assisted-by: LLM
Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
---
drivers/android/binder/rust_binder_main.rs | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/android/binder/rust_binder_main.rs b/drivers/android/binder/rust_binder_main.rs
index 955c4c348f73..bd26ef96fefb 100644
--- a/drivers/android/binder/rust_binder_main.rs
+++ b/drivers/android/binder/rust_binder_main.rs
@@ -98,7 +98,12 @@ fn default() -> Self {
fn next_debug_id() -> usize {
static NEXT_DEBUG_ID: Atomic<usize> = Atomic::new(0);
- NEXT_DEBUG_ID.fetch_add(1, Relaxed)
+ loop {
+ let id = NEXT_DEBUG_ID.fetch_add(1, Relaxed);
+ if id != 0 {
+ return id;
+ }
+ }
}
/// Provides a single place to write Binder return values via the
--
2.56.0.rc1.315.gc6ed9934b7-goog