Re: [PATCH 1/2] rust: watchdog: add watchdog device abstraction

From: kernel test robot

Date: Tue Mar 24 2026 - 08:49:54 EST


Hi Artem,

kernel test robot noticed the following build errors:

[auto build test ERROR on rust/rust-next]
[also build test ERROR on linus/master v7.0-rc5 next-20260323]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Artem-Lytkin/watchdog-softdog_rs-add-Rust-software-watchdog-driver/20260324-145829
base: https://github.com/Rust-for-Linux/linux rust-next
patch link: https://lore.kernel.org/r/20260323195209.5581-1-iprintercanon%40gmail.com
patch subject: [PATCH 1/2] rust: watchdog: add watchdog device abstraction
config: x86_64-rhel-9.4-rust (https://download.01.org/0day-ci/archive/20260324/202603241310.tEi2U9R1-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260324/202603241310.tEi2U9R1-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603241310.tEi2U9R1-lkp@xxxxxxxxx/

All error/warnings (new ones prefixed by >>):

PATH=/opt/cross/clang-20/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
INFO PATH=/opt/cross/rustc-1.88.0-bindgen-0.72.1/cargo/bin:/opt/cross/clang-20/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/usr/bin/timeout -k 100 12h /usr/bin/make KCFLAGS=\ -fno-crash-diagnostics\ -Wno-error=return-type\ -Wreturn-type\ -funsigned-char\ -Wundef\ -falign-functions=64 W=1 --keep-going LLVM=1 -j32 -C source O=/kbuild/obj/consumer/x86_64-rhel-9.4-rust ARCH=x86_64 SHELL=/bin/bash rustfmtcheck
make: Entering directory '/kbuild/src/consumer'
make[1]: Entering directory '/kbuild/obj/consumer/x86_64-rhel-9.4-rust'
>> Diff in rust/kernel/watchdog.rs:94:
/// # Safety
///
/// `wdd` must be passed by the corresponding callback in `watchdog_ops`.
- unsafe extern "C" fn start_callback(
- wdd: *mut bindings::watchdog_device,
- ) -> core::ffi::c_int {
+ unsafe extern "C" fn start_callback(wdd: *mut bindings::watchdog_device) -> core::ffi::c_int {
from_result(|| {
// SAFETY: The watchdog core serialises access to the device.
let dev = unsafe { Device::from_raw(wdd) };
Diff in rust/kernel/watchdog.rs:108:
/// # Safety
///
/// `wdd` must be passed by the corresponding callback in `watchdog_ops`.
- unsafe extern "C" fn stop_callback(
- wdd: *mut bindings::watchdog_device,
- ) -> core::ffi::c_int {
+ unsafe extern "C" fn stop_callback(wdd: *mut bindings::watchdog_device) -> core::ffi::c_int {
from_result(|| {
// SAFETY: The watchdog core serialises access to the device.
let dev = unsafe { Device::from_raw(wdd) };
Diff in rust/kernel/watchdog.rs:122:
/// # Safety
///
/// `wdd` must be passed by the corresponding callback in `watchdog_ops`.
- unsafe extern "C" fn ping_callback(
- wdd: *mut bindings::watchdog_device,
- ) -> core::ffi::c_int {
+ unsafe extern "C" fn ping_callback(wdd: *mut bindings::watchdog_device) -> core::ffi::c_int {
from_result(|| {
// SAFETY: The watchdog core serialises access to the device.
let dev = unsafe { Device::from_raw(wdd) };
Diff in rust/kernel/lib.rs:155:
pub mod transmute;
pub mod types;
pub mod uaccess;
-#[cfg(CONFIG_WATCHDOG)]
-pub mod watchdog;
#[cfg(CONFIG_USB = "y")]
pub mod usb;
+#[cfg(CONFIG_WATCHDOG)]
+pub mod watchdog;
pub mod workqueue;
pub mod xarray;

>> Diff in rust/kernel/watchdog.rs:94:
/// # Safety
///
/// `wdd` must be passed by the corresponding callback in `watchdog_ops`.
- unsafe extern "C" fn start_callback(
- wdd: *mut bindings::watchdog_device,
- ) -> core::ffi::c_int {
+ unsafe extern "C" fn start_callback(wdd: *mut bindings::watchdog_device) -> core::ffi::c_int {
from_result(|| {
// SAFETY: The watchdog core serialises access to the device.
let dev = unsafe { Device::from_raw(wdd) };
Diff in rust/kernel/watchdog.rs:108:
/// # Safety
///
/// `wdd` must be passed by the corresponding callback in `watchdog_ops`.
- unsafe extern "C" fn stop_callback(
- wdd: *mut bindings::watchdog_device,
- ) -> core::ffi::c_int {
+ unsafe extern "C" fn stop_callback(wdd: *mut bindings::watchdog_device) -> core::ffi::c_int {
from_result(|| {
// SAFETY: The watchdog core serialises access to the device.
let dev = unsafe { Device::from_raw(wdd) };
Diff in rust/kernel/watchdog.rs:122:
/// # Safety
///
/// `wdd` must be passed by the corresponding callback in `watchdog_ops`.
- unsafe extern "C" fn ping_callback(
- wdd: *mut bindings::watchdog_device,
- ) -> core::ffi::c_int {
+ unsafe extern "C" fn ping_callback(wdd: *mut bindings::watchdog_device) -> core::ffi::c_int {
from_result(|| {
// SAFETY: The watchdog core serialises access to the device.
let dev = unsafe { Device::from_raw(wdd) };
make[2]: *** [Makefile:1912: rustfmt] Error 123
make[1]: Leaving directory '/kbuild/obj/consumer/x86_64-rhel-9.4-rust'
make[1]: *** [Makefile:248: __sub-make] Error 2
make: *** [Makefile:248: __sub-make] Error 2
make[1]: Target 'rustfmtcheck' not remade because of errors.
make: Target 'rustfmtcheck' not remade because of errors.
make: Leaving directory '/kbuild/src/consumer'
make[2]: Target 'rustfmtcheck' not remade because of errors.
--
>> warning: this function has too many arguments (8/7)
--> rust/kernel/watchdog.rs:290:5
|
290 | / pub fn register(
291 | | module: &'static crate::ThisModule,
292 | | parent: Option<&device::Device>,
293 | | info: &'static bindings::watchdog_info,
... |
298 | | nowayout: bool,
299 | | ) -> Result<Self> {
| |_____________________^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments
= note: `-W clippy::too-many-arguments` implied by `-W clippy::all`
= help: to override `-W clippy::all` add `#[allow(clippy::too_many_arguments)]`

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki