diff --git a/virtio-devices/src/balloon.rs b/virtio-devices/src/balloon.rs index d92201e49..a37e26b7e 100644 --- a/virtio-devices/src/balloon.rs +++ b/virtio-devices/src/balloon.rs @@ -100,7 +100,7 @@ pub struct VirtioBalloonConfig { const CONFIG_ACTUAL_OFFSET: u64 = 4; const CONFIG_ACTUAL_SIZE: usize = 4; -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioBalloonConfig {} struct VirtioBalloonResizeReceiver { diff --git a/virtio-devices/src/console.rs b/virtio-devices/src/console.rs index 166da10b8..83414d2a5 100644 --- a/virtio-devices/src/console.rs +++ b/virtio-devices/src/console.rs @@ -69,7 +69,7 @@ impl Default for VirtioConsoleConfig { } } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioConsoleConfig {} struct ConsoleEpollHandler { diff --git a/virtio-devices/src/iommu.rs b/virtio-devices/src/iommu.rs index e795782ac..1b8ef1c16 100644 --- a/virtio-devices/src/iommu.rs +++ b/virtio-devices/src/iommu.rs @@ -79,8 +79,6 @@ struct VirtioIommuRange32 { end: u32, } -unsafe impl ByteValued for VirtioIommuRange32 {} - #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] #[allow(dead_code)] @@ -89,8 +87,6 @@ struct VirtioIommuRange64 { end: u64, } -unsafe impl ByteValued for VirtioIommuRange64 {} - #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] #[allow(dead_code)] @@ -103,8 +99,6 @@ struct VirtioIommuConfig { _reserved: [u8; 7], } -unsafe impl ByteValued for VirtioIommuConfig {} - /// Virtio IOMMU request type const VIRTIO_IOMMU_T_ATTACH: u8 = 1; const VIRTIO_IOMMU_T_DETACH: u8 = 2; @@ -119,8 +113,6 @@ struct VirtioIommuReqHead { _reserved: [u8; 3], } -unsafe impl ByteValued for VirtioIommuReqHead {} - /// Virtio IOMMU request status const VIRTIO_IOMMU_S_OK: u8 = 0; #[allow(unused)] @@ -148,8 +140,6 @@ struct VirtioIommuReqTail { _reserved: [u8; 3], } -unsafe impl ByteValued for VirtioIommuReqTail {} - /// ATTACH request #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] @@ -159,8 +149,6 @@ struct VirtioIommuReqAttach { _reserved: [u8; 8], } -unsafe impl ByteValued for VirtioIommuReqAttach {} - /// DETACH request #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] @@ -170,8 +158,6 @@ struct VirtioIommuReqDetach { _reserved: [u8; 8], } -unsafe impl ByteValued for VirtioIommuReqDetach {} - /// Virtio IOMMU request MAP flags #[allow(unused)] const VIRTIO_IOMMU_MAP_F_READ: u32 = 1; @@ -194,8 +180,6 @@ struct VirtioIommuReqMap { _flags: u32, } -unsafe impl ByteValued for VirtioIommuReqMap {} - /// UNMAP request #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] @@ -206,8 +190,6 @@ struct VirtioIommuReqUnmap { _reserved: [u8; 4], } -unsafe impl ByteValued for VirtioIommuReqUnmap {} - /// Virtio IOMMU request PROBE types #[allow(unused)] const VIRTIO_IOMMU_PROBE_T_NONE: u16 = 0; @@ -224,8 +206,6 @@ struct VirtioIommuReqProbe { _reserved: [u64; 8], } -unsafe impl ByteValued for VirtioIommuReqProbe {} - #[derive(Copy, Clone, Debug, Default)] #[repr(packed)] #[allow(dead_code)] @@ -234,8 +214,6 @@ struct VirtioIommuProbeProperty { length: u16, } -unsafe impl ByteValued for VirtioIommuProbeProperty {} - /// Virtio IOMMU request PROBE property RESV_MEM subtypes #[allow(unused)] const VIRTIO_IOMMU_RESV_MEM_T_RESERVED: u8 = 0; @@ -251,8 +229,6 @@ struct VirtioIommuProbeResvMem { end: u64, } -unsafe impl ByteValued for VirtioIommuProbeResvMem {} - /// Virtio IOMMU fault flags #[allow(unused)] const VIRTIO_IOMMU_FAULT_F_READ: u32 = 1; @@ -284,6 +260,19 @@ struct VirtioIommuFault { address: u64, } +// SAFETY: these data structures only contain integers and have no implicit padding +unsafe impl ByteValued for VirtioIommuRange32 {} +unsafe impl ByteValued for VirtioIommuRange64 {} +unsafe impl ByteValued for VirtioIommuConfig {} +unsafe impl ByteValued for VirtioIommuReqHead {} +unsafe impl ByteValued for VirtioIommuReqTail {} +unsafe impl ByteValued for VirtioIommuReqAttach {} +unsafe impl ByteValued for VirtioIommuReqDetach {} +unsafe impl ByteValued for VirtioIommuReqMap {} +unsafe impl ByteValued for VirtioIommuReqUnmap {} +unsafe impl ByteValued for VirtioIommuReqProbe {} +unsafe impl ByteValued for VirtioIommuProbeProperty {} +unsafe impl ByteValued for VirtioIommuProbeResvMem {} unsafe impl ByteValued for VirtioIommuFault {} #[derive(Debug)] diff --git a/virtio-devices/src/mem.rs b/virtio-devices/src/mem.rs index 419385815..bd3ee1c3d 100644 --- a/virtio-devices/src/mem.rs +++ b/virtio-devices/src/mem.rs @@ -149,7 +149,7 @@ struct VirtioMemReq { padding_1: [u16; 3], } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioMemReq {} #[repr(C)] @@ -160,7 +160,7 @@ struct VirtioMemResp { state: u16, } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioMemResp {} #[repr(C)] @@ -186,7 +186,7 @@ pub struct VirtioMemConfig { requested_size: u64, } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioMemConfig {} impl VirtioMemConfig { diff --git a/virtio-devices/src/pmem.rs b/virtio-devices/src/pmem.rs index 447b79ef8..eb9489fdb 100644 --- a/virtio-devices/src/pmem.rs +++ b/virtio-devices/src/pmem.rs @@ -50,7 +50,7 @@ struct VirtioPmemConfig { size: u64, } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioPmemConfig {} #[derive(Copy, Clone, Debug, Default)] @@ -59,7 +59,7 @@ struct VirtioPmemReq { type_: u32, } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioPmemReq {} #[derive(Copy, Clone, Debug, Default)] @@ -68,7 +68,7 @@ struct VirtioPmemResp { ret: u32, } -// Safe because it only has data and has no implicit padding. +// SAFETY: it only has data and has no implicit padding. unsafe impl ByteValued for VirtioPmemResp {} #[derive(Debug)] diff --git a/virtio-devices/src/transport/pci_device.rs b/virtio-devices/src/transport/pci_device.rs index 498d5d8af..34f69ead2 100644 --- a/virtio-devices/src/transport/pci_device.rs +++ b/virtio-devices/src/transport/pci_device.rs @@ -75,7 +75,7 @@ struct VirtioPciCap { offset: Le32, // Offset within bar. length: Le32, // Length of the structure, in bytes. } -// It is safe to implement ByteValued. All members are simple numbers and any value is valid. +// SAFETY: All members are simple numbers and any value is valid. unsafe impl ByteValued for VirtioPciCap {} impl PciCapability for VirtioPciCap { @@ -111,7 +111,7 @@ struct VirtioPciNotifyCap { cap: VirtioPciCap, notify_off_multiplier: Le32, } -// It is safe to implement ByteValued. All members are simple numbers and any value is valid. +// SAFETY: All members are simple numbers and any value is valid. unsafe impl ByteValued for VirtioPciNotifyCap {} impl PciCapability for VirtioPciNotifyCap { @@ -156,7 +156,7 @@ struct VirtioPciCap64 { offset_hi: Le32, length_hi: Le32, } -// It is safe to implement ByteValued. All members are simple numbers and any value is valid. +// SAFETY: All members are simple numbers and any value is valid. unsafe impl ByteValued for VirtioPciCap64 {} impl PciCapability for VirtioPciCap64 { @@ -194,7 +194,7 @@ struct VirtioPciCfgCap { cap: VirtioPciCap, pci_cfg_data: [u8; 4], } -// It is safe to implement ByteValued. All members are simple numbers and any value is valid. +// SAFETY: All members are simple numbers and any value is valid. unsafe impl ByteValued for VirtioPciCfgCap {} impl PciCapability for VirtioPciCfgCap {