From 32d0ed324f6fc9428f2942c48ea5d2530e08665a Mon Sep 17 00:00:00 2001 From: Alice Ryhl Date: Wed, 30 Sep 2026 13:56:36 +0000 Subject: [PATCH] rust_binder: never return 0 from next_debug_id 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 Link: https://patch.msgid.link/20260930-binder-transaction-log-v2-1-8a15e9b8cae3@google.com Signed-off-by: Greg Kroah-Hartman --- 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 92bf33f9ff1c..89add66c0483 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 = 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