From: Jahnavi MN <jahnavimn@google.com>
To: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Arve Hjønnevåg" <arve@android.com>,
"Todd Kjos" <tkjos@android.com>,
"Christian Brauner" <brauner@kernel.org>,
"Carlos Llamas" <cmllamas@google.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Tamir Duberstein" <tamird@kernel.org>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"Onur Özkan" <work@onurozkan.dev>
Cc: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
Jahnavi MN <jahnavimn@google.com>
Subject: [PATCH v3 0/7] rust_binder : Implement dynamic debug logging mask
Date: Mon, 13 Jul 2026 12:35:22 +0000 [thread overview]
Message-ID: <20260713-rust_binder_debug_mask-v3-0-0de91bbbbf69@google.com> (raw)
When a user-space application sends malformed data or makes a
lifecycle mistake, the driver rejects it with a generic error code
(like -EINVAL). Without internal logs, the driver acts as a
"black box," forcing developers to guess which check failed.
In the legacy C Binder driver, this issue is solved using a dynamic
debug_mask module parameter that toggles verbose logs for specific
subsystems. This series brings the same critical capability to the
Rust Binder driver to provide developers with clear, real-time
feedback.
Instead of rebuilds, reboots, or guessing:
- Developers can enable logs instantly on a running device by writing to
`/sys/module/rust_binder/parameters/debug_mask`.
- It prints the exact reason for failures (such as alignment errors,
mismatched call stacks, or invalid handle references) directly into
`dmesg`, reducing debugging time from hours to seconds.
- It protects system logs by keeping logging off by default and only
enabling it when developers are actively troubleshooting.
Based on top of:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
Signed-off-by: Jahnavi MN <jahnavimn@google.com>
---
Changes in v3:
- Rebase the entire series on top of the latest char-misc-testing tree.
- Define `rust_binder_debug_mask` in Rust as an `Atomic<u32>` and export it to
C as `extern u32` to avoid raw volatile reads and FFI UB.
- Use `kernel::bits::bit_u32` instead of raw bit shifts.
- Simplify `binder_debug!` macro rules and remove the redundant `raw` helper.
- Wrap the raw mask in `DebugMasks` to use type-safe `.contains(mask)`.
- Link to v2: https://lore.kernel.org/r/20260710-rust_binder_debug_mask-v2-0-2846410e3ae6@google.com
Changes in v2:
- Defined the debug mask categories using bitflags (impl_flags) to
resolve potential Undefined Behavior and match Rust idioms.
- Added a tgid helper to rust/kernel/task.rs to expose the task
group ID and optimize default "PID:TID" prefixing.
- Implemented the BINDER_DEBUG_DEATH_NOTIFICATION mask to log OOM
failures, lifecycle updates, and async delivery to user-space.
- Added pid fields to ThreadError, DeliverCode, and FreezeMessage
to ensure cancellation logs show the correct process PID instead
of background kworker PIDs.
- Removed duplicate PID printing across workqueue, transaction
failure, and stack unwinding logs.
- Refactored log formatting (e.g. formatted BinderError with {:?},
used "strong"/"weak" strings, and improved message wording).
- Fixed logic bugs (restored missing update_ref block, moved manager
lookup warnings).
- Cleaned up spurious newlines, corrected indentations, and adjusted
all commit titles to be shorter and more meaningful.
- Link to v1: https://lore.kernel.org/r/20260703-rust_binder_debug_mask-v1-0-9bdf12b5325c@google.com
---
Jahnavi MN (7):
rust_binder: Add dynamic debug logging mask
rust_binder: Implement BINDER_DEBUG_USER_ERROR for freezer-related operation
rust_binder: Implement BINDER_DEBUG_USER_ERROR for refcounting and death notifications
rust_binder: Implement BINDER_DEBUG_USER_ERROR for transaction parsing failures
rust_binder: Implement BINDER_DEBUG_FAILED_TRANSACTION
rust_binder: Implement BINDER_DEBUG_DEATH_NOTIFICATION
rust_binder: Implement BINDER_DEBUG_DEAD_TRANSACTION
drivers/android/binder/debug.rs | 76 +++++++++++++++++++
drivers/android/binder/freeze.rs | 64 +++++++++++-----
drivers/android/binder/node.rs | 24 ++++--
drivers/android/binder/process.rs | 56 ++++++++++++--
drivers/android/binder/rust_binder_main.rs | 16 +++-
drivers/android/binder/rust_binderfs.c | 3 +
drivers/android/binder/thread.rs | 117 ++++++++++++++++++++---------
drivers/android/binder/transaction.rs | 15 ++++
rust/kernel/task.rs | 7 ++
9 files changed, 309 insertions(+), 69 deletions(-)
---
base-commit: f8d269390cd2a7a9fb5a31f153e7c7b709defea0
change-id: 20260702-rust_binder_debug_mask-636737015624
Best regards,
--
Jahnavi MN <jahnavimn@google.com>
WARNING: multiple messages have this Message-ID (diff)
From: Jahnavi MN via B4 Relay <devnull+jahnavimn.google.com@kernel.org>
To: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Arve Hjønnevåg" <arve@android.com>,
"Todd Kjos" <tkjos@android.com>,
"Christian Brauner" <brauner@kernel.org>,
"Carlos Llamas" <cmllamas@google.com>,
"Alice Ryhl" <aliceryhl@google.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Boqun Feng" <boqun@kernel.org>, "Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Tamir Duberstein" <tamird@kernel.org>,
"Alexandre Courbot" <acourbot@nvidia.com>,
"Onur Özkan" <work@onurozkan.dev>
Cc: linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org,
Jahnavi MN <jahnavimn@google.com>
Subject: [PATCH v3 0/7] rust_binder : Implement dynamic debug logging mask
Date: Mon, 13 Jul 2026 12:35:22 +0000 [thread overview]
Message-ID: <20260713-rust_binder_debug_mask-v3-0-0de91bbbbf69@google.com> (raw)
When a user-space application sends malformed data or makes a
lifecycle mistake, the driver rejects it with a generic error code
(like -EINVAL). Without internal logs, the driver acts as a
"black box," forcing developers to guess which check failed.
In the legacy C Binder driver, this issue is solved using a dynamic
debug_mask module parameter that toggles verbose logs for specific
subsystems. This series brings the same critical capability to the
Rust Binder driver to provide developers with clear, real-time
feedback.
Instead of rebuilds, reboots, or guessing:
- Developers can enable logs instantly on a running device by writing to
`/sys/module/rust_binder/parameters/debug_mask`.
- It prints the exact reason for failures (such as alignment errors,
mismatched call stacks, or invalid handle references) directly into
`dmesg`, reducing debugging time from hours to seconds.
- It protects system logs by keeping logging off by default and only
enabling it when developers are actively troubleshooting.
Based on top of:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
Signed-off-by: Jahnavi MN <jahnavimn@google.com>
---
Changes in v3:
- Rebase the entire series on top of the latest char-misc-testing tree.
- Define `rust_binder_debug_mask` in Rust as an `Atomic<u32>` and export it to
C as `extern u32` to avoid raw volatile reads and FFI UB.
- Use `kernel::bits::bit_u32` instead of raw bit shifts.
- Simplify `binder_debug!` macro rules and remove the redundant `raw` helper.
- Wrap the raw mask in `DebugMasks` to use type-safe `.contains(mask)`.
- Link to v2: https://lore.kernel.org/r/20260710-rust_binder_debug_mask-v2-0-2846410e3ae6@google.com
Changes in v2:
- Defined the debug mask categories using bitflags (impl_flags) to
resolve potential Undefined Behavior and match Rust idioms.
- Added a tgid helper to rust/kernel/task.rs to expose the task
group ID and optimize default "PID:TID" prefixing.
- Implemented the BINDER_DEBUG_DEATH_NOTIFICATION mask to log OOM
failures, lifecycle updates, and async delivery to user-space.
- Added pid fields to ThreadError, DeliverCode, and FreezeMessage
to ensure cancellation logs show the correct process PID instead
of background kworker PIDs.
- Removed duplicate PID printing across workqueue, transaction
failure, and stack unwinding logs.
- Refactored log formatting (e.g. formatted BinderError with {:?},
used "strong"/"weak" strings, and improved message wording).
- Fixed logic bugs (restored missing update_ref block, moved manager
lookup warnings).
- Cleaned up spurious newlines, corrected indentations, and adjusted
all commit titles to be shorter and more meaningful.
- Link to v1: https://lore.kernel.org/r/20260703-rust_binder_debug_mask-v1-0-9bdf12b5325c@google.com
---
Jahnavi MN (7):
rust_binder: Add dynamic debug logging mask
rust_binder: Implement BINDER_DEBUG_USER_ERROR for freezer-related operation
rust_binder: Implement BINDER_DEBUG_USER_ERROR for refcounting and death notifications
rust_binder: Implement BINDER_DEBUG_USER_ERROR for transaction parsing failures
rust_binder: Implement BINDER_DEBUG_FAILED_TRANSACTION
rust_binder: Implement BINDER_DEBUG_DEATH_NOTIFICATION
rust_binder: Implement BINDER_DEBUG_DEAD_TRANSACTION
drivers/android/binder/debug.rs | 76 +++++++++++++++++++
drivers/android/binder/freeze.rs | 64 +++++++++++-----
drivers/android/binder/node.rs | 24 ++++--
drivers/android/binder/process.rs | 56 ++++++++++++--
drivers/android/binder/rust_binder_main.rs | 16 +++-
drivers/android/binder/rust_binderfs.c | 3 +
drivers/android/binder/thread.rs | 117 ++++++++++++++++++++---------
drivers/android/binder/transaction.rs | 15 ++++
rust/kernel/task.rs | 7 ++
9 files changed, 309 insertions(+), 69 deletions(-)
---
base-commit: f8d269390cd2a7a9fb5a31f153e7c7b709defea0
change-id: 20260702-rust_binder_debug_mask-636737015624
Best regards,
--
Jahnavi MN <jahnavimn@google.com>
next reply other threads:[~2026-07-13 12:35 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-13 12:35 Jahnavi MN [this message]
2026-07-13 12:35 ` [PATCH v3 0/7] rust_binder : Implement dynamic debug logging mask Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 1/7] rust_binder: Add " Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 2/7] rust_binder: Implement BINDER_DEBUG_USER_ERROR for freezer-related operation Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 3/7] rust_binder: Implement BINDER_DEBUG_USER_ERROR for refcounting and death notifications Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 4/7] rust_binder: Implement BINDER_DEBUG_USER_ERROR for transaction parsing failures Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 5/7] rust_binder: Implement BINDER_DEBUG_FAILED_TRANSACTION Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 6/7] rust_binder: Implement BINDER_DEBUG_DEATH_NOTIFICATION Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 12:35 ` [PATCH v3 7/7] rust_binder: Implement BINDER_DEBUG_DEAD_TRANSACTION Jahnavi MN
2026-07-13 12:35 ` Jahnavi MN via B4 Relay
2026-07-13 21:04 ` Carlos Llamas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260713-rust_binder_debug_mask-v3-0-0de91bbbbf69@google.com \
--to=jahnavimn@google.com \
--cc=a.hindborg@kernel.org \
--cc=acourbot@nvidia.com \
--cc=aliceryhl@google.com \
--cc=arve@android.com \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun@kernel.org \
--cc=brauner@kernel.org \
--cc=cmllamas@google.com \
--cc=dakr@kernel.org \
--cc=daniel.almeida@collabora.com \
--cc=gary@garyguo.net \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lossin@kernel.org \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=tamird@kernel.org \
--cc=tkjos@android.com \
--cc=tmgross@umich.edu \
--cc=work@onurozkan.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.