Skip to content

Commit fce8afd

Browse files
davidhildenbrandmstsirkin
authored andcommitted
virtio-mem: Don't rely on implicit compiler padding for requests
The compiler will add padding after the last member, make that explicit. The size of a request is always 24 bytes. The size of a response always 10 bytes. Add compile-time checks. Cc: "Michael S. Tsirkin" <[email protected]> Cc: Pankaj Gupta <[email protected]> Cc: teawater <[email protected]> Signed-off-by: David Hildenbrand <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent 72f9525 commit fce8afd

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

drivers/virtio/virtio_mem.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1770,6 +1770,9 @@ static int virtio_mem_probe(struct virtio_device *vdev)
17701770
struct virtio_mem *vm;
17711771
int rc = -EINVAL;
17721772

1773+
BUILD_BUG_ON(sizeof(struct virtio_mem_req) != 24);
1774+
BUILD_BUG_ON(sizeof(struct virtio_mem_resp) != 10);
1775+
17731776
vdev->priv = vm = kzalloc(sizeof(*vm), GFP_KERNEL);
17741777
if (!vm)
17751778
return -ENOMEM;

include/uapi/linux/virtio_mem.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,19 @@
103103
struct virtio_mem_req_plug {
104104
__virtio64 addr;
105105
__virtio16 nb_blocks;
106+
__virtio16 padding[3];
106107
};
107108

108109
struct virtio_mem_req_unplug {
109110
__virtio64 addr;
110111
__virtio16 nb_blocks;
112+
__virtio16 padding[3];
111113
};
112114

113115
struct virtio_mem_req_state {
114116
__virtio64 addr;
115117
__virtio16 nb_blocks;
118+
__virtio16 padding[3];
116119
};
117120

118121
struct virtio_mem_req {

0 commit comments

Comments
 (0)