From f85099ea4771138bbd982ae411993c0da7157384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Holz?= Date: Tue, 20 Feb 2024 23:40:53 +0100 Subject: [PATCH] Kernel/Storage: Make AHCI::HBA::port_regs a flexible array member Some real hardware apparently uses smaller BAR sizes than sizeof(HBA) with a completely filled port_regs member. Change the port_regs array to a flexible array member, so we don't panic while verifying that the BAR size is large enough to map this struct. Accesses to this array are already bounds checked against AHCI::Limits::MaxPorts. --- Kernel/Devices/Storage/ATA/AHCI/Definitions.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Devices/Storage/ATA/AHCI/Definitions.h b/Kernel/Devices/Storage/ATA/AHCI/Definitions.h index 0628ca3a04..a432d99e7c 100644 --- a/Kernel/Devices/Storage/ATA/AHCI/Definitions.h +++ b/Kernel/Devices/Storage/ATA/AHCI/Definitions.h @@ -401,7 +401,7 @@ struct [[gnu::packed]] HBA { u8 reserved[52]; u8 nvmhci[64]; u8 vendor_specific[96]; - PortRegisters port_regs[32]; + PortRegisters port_regs[]; }; struct [[gnu::packed]] CommandHeader {