[PATCH v6 0/4] Rate limited printing for Rust

From: Alice Ryhl

Date: Wed Oct 07 2026 - 10:37:31 EST


To avoid DoS on the kernel log, the Rust Binder driver is being switched
to rate limited printing. But before we can do that, we must first
implement rate limited printing for Rust. Thus, do that.

However, it turns out that before we can implement rate limited
printing, we must first implement the ability declare a raw_spinlock_t
in a global variable. Thus, do that too.

Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
---
Changes in v6:
- Rebase on rust-next.
- Split out "rust_binder: consolidate transaction failure prints" to a
separate patch series.
- Add CONFIG_UML_X86 to __ARCH_SPIN_LOCK_UNLOCKED cfg list.
- Add missing // INVARIANT: comment in Ratelimit::new_static().
- Pass caller location to Ratelimit::ratelimit().
- Also update report_netlink() and range_alloc/tree.rs to use pr_warn_ratelimited!.
- Link to v5: https://lore.kernel.org/r/20260803-pr-ratelimited-v5-0-a77d456de974@xxxxxxxxxx

Changes in v5:
- Rebase on char-misc-next.
- Pick up Acked-by tags.
- Link to v4: https://lore.kernel.org/r/20260728-pr-ratelimited-v4-0-435f8d6e9605@xxxxxxxxxx

Changes in v4:
- Rebase series.
- Mark Ratelimit::new_static() with #[inline]
- Link to v3: https://lore.kernel.org/r/20260722-pr-ratelimited-v3-0-57faa37fdfbd@xxxxxxxxxx

Changes in v3:
- Rebase on char-misc-testing.
- Add rust/kernel/sync/lockdep.rs to MAINTAINERS file.
- Link to v2: https://lore.kernel.org/r/20260716-pr-ratelimited-v2-0-31c27a4543d2@xxxxxxxxxx

Changes in v2:
- Rebase on top of binder_debug! patch series.
- As a consequence, the logic for printing the size of transaction
failures is changed to print the size of each piece of the
transaction, rather than the total buffer size.
- Add doc aliases for raw_spin_lock_unlocked.
- Make raw_spin_lock_unlocked and raw_lockdep_map private.
- Add Ratelimit::new_static.
- Add some missing links to docs.
- Link to v1: https://lore.kernel.org/r/20260623-pr-ratelimited-v1-0-cc922f544dc0@xxxxxxxxxx

---
Alice Ryhl (4):
rust: sync: move lockdep types to rust/kernel/sync/lockdep.rs
rust: sync: add const constructor for raw_spinlock_t
rust: add pr_*_ratelimit! macros for printing
rust_binder: use pr_*_ratelimited! for printing

MAINTAINERS | 1 +
drivers/android/binder/allocation.rs | 4 +-
drivers/android/binder/context.rs | 6 +-
drivers/android/binder/debug.rs | 4 +-
drivers/android/binder/freeze.rs | 2 +-
drivers/android/binder/node.rs | 4 +-
drivers/android/binder/page_range.rs | 12 +-
drivers/android/binder/process.rs | 22 +--
drivers/android/binder/range_alloc/tree.rs | 26 ++--
drivers/android/binder/thread.rs | 48 ++++---
drivers/android/binder/transaction.rs | 6 +-
include/linux/spinlock_types_raw.h | 4 +
rust/bindings/lib.rs | 25 ++++
rust/helpers/helpers.c | 1 +
rust/helpers/ratelimit.c | 14 ++
rust/kernel/lib.rs | 1 +
rust/kernel/prelude.rs | 8 ++
rust/kernel/ratelimit.rs | 216 +++++++++++++++++++++++++++++
rust/kernel/sync.rs | 135 +-----------------
rust/kernel/sync/lock/spinlock.rs | 28 ++++
rust/kernel/sync/lockdep.rs | 161 +++++++++++++++++++++
21 files changed, 532 insertions(+), 196 deletions(-)
---
base-commit: 2dee3d3adcadcc57d62ba6608cd02f50b0c10264
change-id: 20260619-pr-ratelimited-6e20fa89bd5b

Best regards,
--
Alice Ryhl <aliceryhl@xxxxxxxxxx>