[PATCH 3/3] XXX: Workaround for __udivdi3() and __umoddi3()

Link Mauve linkmauve at linkmauve.fr
Fri Apr 10 21:51:24 AEST 2026


The core crate currently depends on these two functions for i64/u64/
i128/u128/core::time::Duration formatting, but we shouldn’t use that in
the kernel so let’s panic if they are ever called.
---
 rust/exports.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/rust/exports.c b/rust/exports.c
index 587f0e776aba..5f1cdf13882e 100644
--- a/rust/exports.c
+++ b/rust/exports.c
@@ -12,6 +12,7 @@
  */
 
 #include <linux/export.h>
+#include <linux/panic.h>
 
 #define EXPORT_SYMBOL_RUST_GPL(sym) extern int sym; EXPORT_SYMBOL_GPL(sym)
 
@@ -20,6 +21,14 @@
 #include "exports_bindings_generated.h"
 #include "exports_kernel_generated.h"
 
+void __udivdi3(void) {
+	panic("__udivdi3() called but shouldn’t be made available on this architecture!\n");
+}
+
+void __umoddi3(void) {
+	panic("__umoddi3() called but shouldn’t be made available on this architecture!\n");
+}
+
 // For modules using `rust/build_error.rs`.
 #ifdef CONFIG_RUST_BUILD_ASSERT_ALLOW
 EXPORT_SYMBOL_RUST_GPL(rust_build_error);
-- 
2.54.0


--ngs4HrAymANbT/pl--


More information about the Linuxppc-dev mailing list