:: commit f39f51d0138b1a6da4e22e2fb6cc91f9442d3e33

Mintsuki <mintsuki@protonmail.com> — 2025-08-06 14:11

parents: 4d00427c59

drivers/disk: EFI: More coarse validation of handles based on PCI HW subtype

diff --git a/common/drivers/disk.s2.c b/common/drivers/disk.s2.c
index ecf29349..28c94048 100644
--- a/common/drivers/disk.s2.c
+++ b/common/drivers/disk.s2.c
@@ -424,15 +424,11 @@ static bool validate_efi_handle(EFI_HANDLE efi_handle) {
             break;
         }
 
-        if (dp->Type != MEDIA_DEVICE_PATH) {
+        if (dp->Type != HARDWARE_DEVICE_PATH || dp->SubType != HW_PCI_DP) {
             continue;
         }
 
-        switch (dp->SubType) {
-            case MEDIA_HARDDRIVE_DP:
-            case MEDIA_CDROM_DP:
-                return true;
-        }
+        return true;
     }
 
     return false;
@@ -655,6 +651,10 @@ fail:
     for (size_t i = 0; i < handle_count; i++) {
         EFI_BLOCK_IO *drive = NULL;
 
+        if (!validate_efi_handle(handles[i])) {
+            continue;
+        }
+
         status = gBS->HandleProtocol(handles[i], &block_io_guid, (void **)&drive);
 
         if (status != 0 || drive == NULL || drive->Media->LastBlock == 0)
tab: 248 wrap: offon