From 62d71ebbd300baac2bec29803efbc9a9ec5743cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 13 Mar 2026 22:08:39 +0100 Subject: [PATCH] [FREELDR:ARCH] hwide.c: Don't rely on `DEVICE_UNIT P;` to be at the beginning of the `HW_DEVICE_UNIT` structure (#8732) --- boot/freeldr/freeldr/arch/drivers/hwide.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/boot/freeldr/freeldr/arch/drivers/hwide.c b/boot/freeldr/freeldr/arch/drivers/hwide.c index 4d6f7d893e0..8541cc70209 100644 --- a/boot/freeldr/freeldr/arch/drivers/hwide.c +++ b/boot/freeldr/freeldr/arch/drivers/hwide.c @@ -1233,7 +1233,7 @@ AtaReadLogicalSectors( _In_ ULONG SectorCount, _Out_writes_bytes_all_(SectorCount * DeviceUnit->SectorSize) PVOID Buffer) { - PHW_DEVICE_UNIT Unit = (PHW_DEVICE_UNIT)DeviceUnit; + PHW_DEVICE_UNIT Unit = CONTAINING_RECORD(DeviceUnit, HW_DEVICE_UNIT, P); ATA_DEVICE_REQUEST Request = { 0 }; ASSERT(Unit); @@ -1271,8 +1271,7 @@ AtaGetDevice( _In_ UCHAR UnitNumber) { if (UnitNumber < RTL_NUMBER_OF(AtapUnits)) - return (PDEVICE_UNIT)AtapUnits[UnitNumber]; - + return &(AtapUnits[UnitNumber]->P); return NULL; }