:: commit bd0a713c1c2708df90ae7d40cf638184eecabaa5

mintsuki <mintsuki@protonmail.com> — 2021-03-28 18:30

parents: 38bbc1eac4

bios: Skip disks which return bogus geometry

diff --git a/stage23/drivers/disk.s2.c b/stage23/drivers/disk.s2.c
index b0f6094c..d3a41c06 100644
--- a/stage23/drivers/disk.s2.c
+++ b/stage23/drivers/disk.s2.c
@@ -99,6 +99,9 @@ void disk_create_index(void) {
         if (r.eflags & EFLAGS_CF)
             continue;
 
+        if (drive_params.lba_count == 0 || drive_params.bytes_per_sect == 0)
+            continue;
+
         print("Found BIOS drive %x\n", drive);
         print(" ... %X total %u-byte sectors\n",
               drive_params.lba_count, drive_params.bytes_per_sect);
@@ -150,6 +153,9 @@ void disk_create_index(void) {
         if (r.eflags & EFLAGS_CF)
             continue;
 
+        if (drive_params.lba_count == 0 || drive_params.bytes_per_sect == 0)
+            continue;
+
         struct volume *block = ext_mem_alloc(sizeof(struct volume));
 
         block->drive = drive;
tab: 248 wrap: offon