Selaa lähdekoodia

Kernel: Add a VERIFY() to make sure our DMA address is valid

This checks whether the address we're trying to use for DMA is low
enough so as not to overflow the I/O register.
Gunnar Beutner 4 vuotta sitten
vanhempi
commit
9b14a8605a
1 muutettua tiedostoa jossa 3 lisäystä ja 0 poistoa
  1. 3 0
      Kernel/Devices/SB16.cpp

+ 3 - 0
Kernel/Devices/SB16.cpp

@@ -200,6 +200,9 @@ void SB16::dma_start(uint32_t length)
 
     // Write the buffer
     IO::out8(0x8b, addr >> 16);
+    auto page_number = addr >> 16;
+    VERIFY(page_number <= NumericLimits<u8>::max());
+    IO::out8(0x8b, page_number);
 
     // Enable the DMA channel
     IO::out8(0xd4, (channel % 4));