From 1bcecb98c38d3efd92aaf03942cbaba7219ea748 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 30 Sep 2021 18:05:16 -0400 Subject: [PATCH] nvme_disk: Add structure padding for 32-bit. The static asserts are broken on GCC2 and so did not catch this. It appears nobody has ever tried to use this structure on 32-bit plaforms in the upstream libraries or SPDK/DPDK? Fixes #15212. --- build/jam/packages/Haiku | 4 ++-- .../kernel/drivers/disk/nvme/libnvme/nvme_internal.h | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/build/jam/packages/Haiku b/build/jam/packages/Haiku index adc444d6d9..655344d530 100644 --- a/build/jam/packages/Haiku +++ b/build/jam/packages/Haiku @@ -67,7 +67,7 @@ if $(TARGET_ARCH) = x86 || $(TARGET_ARCH) = x86_64 { # drivers AddNewDriversToPackage : wmi@x86,x86_64 ; -AddNewDriversToPackage disk : nvme_disk@x86,x86_64 ; +AddNewDriversToPackage disk : nvme_disk ; AddNewDriversToPackage disk mmc : mmc_disk ; AddNewDriversToPackage disk scsi : scsi_cd scsi_disk ; AddNewDriversToPackage disk virtual : virtio_block ram_disk ; @@ -202,7 +202,7 @@ AddBootModuleSymlinksToPackage ide_isa@x86 isa@x86,x86_64 intel it8211 legacy_sata locked_pool mmc mmc_disk - nvme_disk@x86,x86_64 + nvme_disk openpic@ppc packagefs pci fdt@riscv64,arm diff --git a/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_internal.h b/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_internal.h index 01bc052575..c62a10eb13 100644 --- a/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_internal.h +++ b/src/add-ons/kernel/drivers/disk/nvme/libnvme/nvme_internal.h @@ -311,6 +311,12 @@ struct nvme_tracker { LIST_ENTRY(nvme_tracker) list; struct nvme_request *req; +#if INTPTR_MAX == INT32_MAX + int32_t __pad[3]; +#elif !defined(INTPTR_MAX) +# error Need definition of INTPTR_MAX! +#endif + uint16_t cid; uint16_t rsvd1: 15;