From e4fd066d8276f7acd56f7888e80acfa9b924cce3 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 17 Nov 2025 15:42:20 +0100 Subject: [PATCH] misc: improve developer experience of cargo clippy A major improvement to the developer experience of clippy in Cloud Hypervisor. 1. Make `cargo clippy` just work with the same lints we use in CI 2. Simplify adding new lints Signed-off-by: Philipp Schuster On-behalf-of: SAP philipp.schuster@sap.com --- .github/workflows/build.yaml | 24 +++++++++---------- .../workflows/preview-riscv64-modules.yaml | 4 ++-- .github/workflows/quality.yaml | 24 +++++++++---------- Cargo.toml | 9 +++++++ api_client/Cargo.toml | 3 +++ arch/Cargo.toml | 3 +++ block/Cargo.toml | 3 +++ devices/Cargo.toml | 3 +++ event_monitor/Cargo.toml | 3 +++ hypervisor/Cargo.toml | 3 +++ net_gen/Cargo.toml | 3 +++ net_util/Cargo.toml | 3 +++ option_parser/Cargo.toml | 3 +++ pci/Cargo.toml | 3 +++ performance-metrics/Cargo.toml | 3 +++ rate_limiter/Cargo.toml | 3 +++ serial_buffer/Cargo.toml | 3 +++ test_infra/Cargo.toml | 3 +++ tpm/Cargo.toml | 3 +++ tracer/Cargo.toml | 3 +++ vhost_user_block/Cargo.toml | 3 +++ vhost_user_net/Cargo.toml | 3 +++ virtio-devices/Cargo.toml | 3 +++ vm-allocator/Cargo.toml | 3 +++ vm-device/Cargo.toml | 3 +++ vm-migration/Cargo.toml | 3 +++ vm-virtio/Cargo.toml | 3 +++ vmm/Cargo.toml | 3 +++ 28 files changed, 107 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0a5cef9ab..2149f2e88 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,40 +35,40 @@ jobs: target: ${{ matrix.target }} - name: Build (default features) - run: cargo rustc --locked --bin cloud-hypervisor -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor -- -D warnings - name: Build (kvm) - run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "kvm" -- -D warnings - name: Build (default features + tdx) - run: cargo rustc --locked --bin cloud-hypervisor --features "tdx" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --features "tdx" -- -D warnings - name: Build (default features + dbus_api) - run: cargo rustc --locked --bin cloud-hypervisor --features "dbus_api" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --features "dbus_api" -- -D warnings - name: Build (default features + guest_debug) - run: cargo rustc --locked --bin cloud-hypervisor --features "guest_debug" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --features "guest_debug" -- -D warnings - name: Build (default features + pvmemcontrol) - run: cargo rustc --locked --bin cloud-hypervisor --features "pvmemcontrol" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --features "pvmemcontrol" -- -D warnings - name: Build (default features + fw_cfg) - run: cargo rustc --locked --bin cloud-hypervisor --features "fw_cfg" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --features "fw_cfg" -- -D warnings - name: Build (default features + ivshmem) - run: cargo rustc --locked --bin cloud-hypervisor --features "ivshmem" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --features "ivshmem" -- -D warnings - name: Build (mshv) - run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "mshv" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "mshv" -- -D warnings - name: Build (sev_snp) - run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "sev_snp" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "sev_snp" -- -D warnings - name: Build (igvm) - run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "igvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "igvm" -- -D warnings - name: Build (mshv + kvm) - run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "mshv,kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: cargo rustc --locked --bin cloud-hypervisor --no-default-features --features "mshv,kvm" -- -D warnings - name: Release Build (default features) run: cargo build --locked --all --release --target=${{ matrix.target }} diff --git a/.github/workflows/preview-riscv64-modules.yaml b/.github/workflows/preview-riscv64-modules.yaml index f06b96286..8c2baa049 100644 --- a/.github/workflows/preview-riscv64-modules.yaml +++ b/.github/workflows/preview-riscv64-modules.yaml @@ -27,10 +27,10 @@ jobs: run: /opt/scripts/exec-in-qemu.sh rustup default 1.89.0 - name: Build ${{ matrix.module }} Module (kvm) - run: /opt/scripts/exec-in-qemu.sh cargo rustc --locked -p ${{ matrix.module }} --no-default-features --features "kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: /opt/scripts/exec-in-qemu.sh cargo rustc --locked -p ${{ matrix.module }} --no-default-features --features "kvm" -- -D warnings - name: Clippy ${{ matrix.module }} Module (kvm) - run: /opt/scripts/exec-in-qemu.sh cargo clippy --locked -p ${{ matrix.module }} --no-default-features --features "kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + run: /opt/scripts/exec-in-qemu.sh cargo clippy --locked -p ${{ matrix.module }} --no-default-features --features "kvm" -- -D warnings - name: Test ${{ matrix.module }} Module (kvm) run: /opt/scripts/exec-in-qemu.sh cargo test --locked -p ${{ matrix.module }} --no-default-features --features "kvm" diff --git a/.github/workflows/quality.yaml b/.github/workflows/quality.yaml index f8d5ca41f..8bc37938e 100644 --- a/.github/workflows/quality.yaml +++ b/.github/workflows/quality.yaml @@ -56,7 +56,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --no-default-features --tests --examples --features "kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --no-default-features --tests --examples --features "kvm" -- -D warnings - name: Clippy (mshv) uses: houseabsolute/actions-rust-cross@v1 @@ -65,7 +65,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --no-default-features --tests --examples --features "mshv" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --no-default-features --tests --examples --features "mshv" -- -D warnings - name: Clippy (mshv + kvm) uses: houseabsolute/actions-rust-cross@v1 @@ -74,7 +74,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --no-default-features --tests --examples --features "mshv,kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --no-default-features --tests --examples --features "mshv,kvm" -- -D warnings - name: Clippy (default features) uses: houseabsolute/actions-rust-cross@v1 @@ -83,7 +83,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --tests --examples -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --tests --examples -- -D warnings - name: Clippy (default features + guest_debug) uses: houseabsolute/actions-rust-cross@v1 @@ -92,7 +92,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --tests --examples --features "guest_debug" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --tests --examples --features "guest_debug" -- -D warnings - name: Clippy (default features + pvmemcontrol) uses: houseabsolute/actions-rust-cross@v1 @@ -101,7 +101,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --tests --examples --features "pvmemcontrol" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --tests --examples --features "pvmemcontrol" -- -D warnings - name: Clippy (default features + tracing) uses: houseabsolute/actions-rust-cross@v1 @@ -110,13 +110,13 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --tests --examples --features "tracing" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --tests --examples --features "tracing" -- -D warnings - name: Clippy (default features + fw_cfg) uses: actions-rs/cargo@v1 with: use-cross: ${{ matrix.target != 'x86_64-unknown-linux-gnu' }} command: clippy - args: --target=${{ matrix.target }} --locked --all --all-targets --tests --examples --features "fw_cfg" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --target=${{ matrix.target }} --locked --all --all-targets --tests --examples --features "fw_cfg" -- -D warnings - name: Clippy (default features + ivshmem) uses: houseabsolute/actions-rust-cross@v1 @@ -125,7 +125,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --tests --examples --features "ivshmem" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --tests --examples --features "ivshmem" -- -D warnings - name: Clippy (sev_snp) if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }} @@ -135,7 +135,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --no-default-features --tests --examples --features "sev_snp" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --no-default-features --tests --examples --features "sev_snp" -- -D warnings - name: Clippy (igvm) if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }} @@ -145,7 +145,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --no-default-features --tests --examples --features "igvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --no-default-features --tests --examples --features "igvm" -- -D warnings - name: Clippy (kvm + tdx) if: ${{ matrix.target == 'x86_64-unknown-linux-gnu' }} @@ -155,7 +155,7 @@ jobs: cross-version: 3e0957637b49b1bbced23ad909170650c5b70635 toolchain: ${{ matrix.rust }} target: ${{ matrix.target }} - args: --locked --all --all-targets --no-default-features --tests --examples --features "tdx,kvm" -- -D warnings -D clippy::undocumented_unsafe_blocks -W clippy::assertions_on_result_states + args: --locked --all --all-targets --no-default-features --tests --examples --features "tdx,kvm" -- -D warnings - name: Check build did not modify any files run: test -z "$(git status --porcelain)" diff --git a/Cargo.toml b/Cargo.toml index e1d2f158b..842a39d88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -76,6 +76,9 @@ sev_snp = ["igvm", "mshv", "vmm/sev_snp"] tdx = ["vmm/tdx"] tracing = ["tracer/tracing", "vmm/tracing"] +[lints] +workspace = true + [workspace] members = [ "api_client", @@ -153,3 +156,9 @@ thiserror = "2.0.17" uuid = { version = "1.18.1" } wait-timeout = "0.2.1" zerocopy = { version = "0.8.27", default-features = false } + +[workspace.lints.clippy] +# Any clippy lint in alphabetical order, including lint groups: +# https://rust-lang.github.io/rust-clippy/master/index.html +assertions_on_result_states = "deny" +undocumented_unsafe_blocks = "deny" diff --git a/api_client/Cargo.toml b/api_client/Cargo.toml index 429ecbf92..b8791dfc3 100644 --- a/api_client/Cargo.toml +++ b/api_client/Cargo.toml @@ -7,3 +7,6 @@ version = "0.1.0" [dependencies] thiserror = { workspace = true } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/arch/Cargo.toml b/arch/Cargo.toml index 3bd32affb..804be793d 100644 --- a/arch/Cargo.toml +++ b/arch/Cargo.toml @@ -27,3 +27,6 @@ vmm-sys-util = { workspace = true, features = ["with-serde"] } [target.'cfg(any(target_arch = "aarch64", target_arch = "riscv64"))'.dependencies] fdt_parser = { version = "0.1.5", package = "fdt" } vm-fdt = { workspace = true } + +[lints] +workspace = true diff --git a/block/Cargo.toml b/block/Cargo.toml index db4ac9a6b..9823c1f81 100644 --- a/block/Cargo.toml +++ b/block/Cargo.toml @@ -28,3 +28,6 @@ vm-memory = { workspace = true, features = [ ] } vm-virtio = { path = "../vm-virtio" } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/devices/Cargo.toml b/devices/Cargo.toml index 201d5284f..f635e66a4 100644 --- a/devices/Cargo.toml +++ b/devices/Cargo.toml @@ -48,3 +48,6 @@ fw_cfg = ["arch/fw_cfg", "bitfield-struct", "linux-loader", "zerocopy"] ivshmem = [] kvm = ["arch/kvm"] pvmemcontrol = [] + +[lints] +workspace = true diff --git a/event_monitor/Cargo.toml b/event_monitor/Cargo.toml index b2b7a4e48..41d310280 100644 --- a/event_monitor/Cargo.toml +++ b/event_monitor/Cargo.toml @@ -9,3 +9,6 @@ flume = { workspace = true } libc = { workspace = true } serde = { workspace = true, features = ["derive", "rc"] } serde_json = { workspace = true } + +[lints] +workspace = true diff --git a/hypervisor/Cargo.toml b/hypervisor/Cargo.toml index 93343c931..993d18583 100644 --- a/hypervisor/Cargo.toml +++ b/hypervisor/Cargo.toml @@ -63,3 +63,6 @@ version = "1.21.0" [dev-dependencies] env_logger = { workspace = true } + +[lints] +workspace = true diff --git a/net_gen/Cargo.toml b/net_gen/Cargo.toml index b1443c1f2..a99c7c995 100644 --- a/net_gen/Cargo.toml +++ b/net_gen/Cargo.toml @@ -7,3 +7,6 @@ version = "0.1.0" [dependencies] vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/net_util/Cargo.toml b/net_util/Cargo.toml index 8f5df7222..a55db49f8 100644 --- a/net_util/Cargo.toml +++ b/net_util/Cargo.toml @@ -27,3 +27,6 @@ vmm-sys-util = { workspace = true } pnet = "0.35.0" pnet_datalink = "0.35.0" serde_json = { workspace = true } + +[lints] +workspace = true diff --git a/option_parser/Cargo.toml b/option_parser/Cargo.toml index abacf51dd..3d76690b4 100644 --- a/option_parser/Cargo.toml +++ b/option_parser/Cargo.toml @@ -6,3 +6,6 @@ version = "0.1.0" [dependencies] thiserror = { workspace = true } + +[lints] +workspace = true diff --git a/pci/Cargo.toml b/pci/Cargo.toml index e1d631c34..760baae03 100644 --- a/pci/Cargo.toml +++ b/pci/Cargo.toml @@ -29,3 +29,6 @@ vm-memory = { workspace = true, features = [ ] } vm-migration = { path = "../vm-migration" } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/performance-metrics/Cargo.toml b/performance-metrics/Cargo.toml index 00e6e7468..531c6abe9 100644 --- a/performance-metrics/Cargo.toml +++ b/performance-metrics/Cargo.toml @@ -12,3 +12,6 @@ serde = { workspace = true, features = ["derive", "rc"] } serde_json = { workspace = true } test_infra = { path = "../test_infra" } thiserror = { workspace = true } + +[lints] +workspace = true diff --git a/rate_limiter/Cargo.toml b/rate_limiter/Cargo.toml index 3067c695b..206ec7b7f 100644 --- a/rate_limiter/Cargo.toml +++ b/rate_limiter/Cargo.toml @@ -9,3 +9,6 @@ libc = { workspace = true } log = { workspace = true } thiserror = { workspace = true } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/serial_buffer/Cargo.toml b/serial_buffer/Cargo.toml index 0691b8a3b..767c8a97f 100644 --- a/serial_buffer/Cargo.toml +++ b/serial_buffer/Cargo.toml @@ -3,3 +3,6 @@ authors = ["The Cloud Hypervisor Authors"] edition.workspace = true name = "serial_buffer" version = "0.1.0" + +[lints] +workspace = true diff --git a/test_infra/Cargo.toml b/test_infra/Cargo.toml index 8fdefed15..e6ea592c3 100644 --- a/test_infra/Cargo.toml +++ b/test_infra/Cargo.toml @@ -13,3 +13,6 @@ ssh2 = { version = "0.9.5", features = ["vendored-openssl"] } thiserror = { workspace = true } vmm-sys-util = { workspace = true } wait-timeout = { workspace = true } + +[lints] +workspace = true diff --git a/tpm/Cargo.toml b/tpm/Cargo.toml index cf03968cd..82dc8f79b 100644 --- a/tpm/Cargo.toml +++ b/tpm/Cargo.toml @@ -12,3 +12,6 @@ log = { workspace = true } net_gen = { path = "../net_gen" } thiserror = { workspace = true } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/tracer/Cargo.toml b/tracer/Cargo.toml index bdcf55969..1ac9f4e39 100644 --- a/tracer/Cargo.toml +++ b/tracer/Cargo.toml @@ -12,3 +12,6 @@ serde_json = { workspace = true } [features] tracing = [] + +[lints] +workspace = true diff --git a/vhost_user_block/Cargo.toml b/vhost_user_block/Cargo.toml index c2e738566..e674c96ea 100644 --- a/vhost_user_block/Cargo.toml +++ b/vhost_user_block/Cargo.toml @@ -19,3 +19,6 @@ virtio-bindings = { workspace = true } virtio-queue = { workspace = true } vm-memory = { workspace = true } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/vhost_user_net/Cargo.toml b/vhost_user_net/Cargo.toml index 6cd316e9f..849ad5426 100644 --- a/vhost_user_net/Cargo.toml +++ b/vhost_user_net/Cargo.toml @@ -19,3 +19,6 @@ vhost-user-backend = { workspace = true } virtio-bindings = { workspace = true } vm-memory = { workspace = true } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/virtio-devices/Cargo.toml b/virtio-devices/Cargo.toml index 64a60910c..5cbfe145f 100644 --- a/virtio-devices/Cargo.toml +++ b/virtio-devices/Cargo.toml @@ -47,3 +47,6 @@ vm-memory = { workspace = true, features = [ vm-migration = { path = "../vm-migration" } vm-virtio = { path = "../vm-virtio" } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/vm-allocator/Cargo.toml b/vm-allocator/Cargo.toml index e77e87791..a4996d6dc 100644 --- a/vm-allocator/Cargo.toml +++ b/vm-allocator/Cargo.toml @@ -14,3 +14,6 @@ vm-memory = { workspace = true } [target.'cfg(any(target_arch = "aarch64", target_arch = "riscv64"))'.dependencies] arch = { path = "../arch" } + +[lints] +workspace = true diff --git a/vm-device/Cargo.toml b/vm-device/Cargo.toml index 80ed1489a..a57ea57f5 100644 --- a/vm-device/Cargo.toml +++ b/vm-device/Cargo.toml @@ -16,3 +16,6 @@ thiserror = { workspace = true } vfio-ioctls = { workspace = true, default-features = false } vm-memory = { workspace = true, features = ["backend-mmap"] } vmm-sys-util = { workspace = true } + +[lints] +workspace = true diff --git a/vm-migration/Cargo.toml b/vm-migration/Cargo.toml index 69d57076f..b17475065 100644 --- a/vm-migration/Cargo.toml +++ b/vm-migration/Cargo.toml @@ -11,3 +11,6 @@ serde = { workspace = true, features = ["derive", "rc"] } serde_json = { workspace = true } thiserror = { workspace = true } vm-memory = { workspace = true, features = ["backend-atomic", "backend-mmap"] } + +[lints] +workspace = true diff --git a/vm-virtio/Cargo.toml b/vm-virtio/Cargo.toml index 5f195af49..228f55241 100644 --- a/vm-virtio/Cargo.toml +++ b/vm-virtio/Cargo.toml @@ -14,3 +14,6 @@ vm-memory = { workspace = true, features = [ "backend-bitmap", "backend-mmap", ] } + +[lints] +workspace = true diff --git a/vmm/Cargo.toml b/vmm/Cargo.toml index b7035f030..37434f215 100644 --- a/vmm/Cargo.toml +++ b/vmm/Cargo.toml @@ -93,3 +93,6 @@ vm-virtio = { path = "../vm-virtio" } vmm-sys-util = { workspace = true, features = ["with-serde"] } zbus = { version = "5.11.0", optional = true } zerocopy = { workspace = true, features = ["alloc", "derive"] } + +[lints] +workspace = true