4 ms·
It isn't a software issue - it's a hardware issue. FireWire and these other specifications require direct memory access. If you plug in a device and it emulates
by AaronFriel 13y ago
It isn't a software issue - it's a hardware issue. FireWire and these other specifications require direct memory access. If you plug in a device and it emulates something that requests DMA from the hardware, your machine can be owned.
The solution is an IO memory management unit with virtualized access to physical memory. I am not sure how you can actually enforce this to devices on the bus though.
- nine_k 13y agoIf it requires a driver (and it does), it is a software issue. Just having a FireWire port, without a driver, is not enough. So a sane OS should just not allow to initialize a DMA transfer from a newly attached device until a user with enough privilege allows it.
- __david__ 13y agoThe solution is easier than that: only open up the appropriate buffers to DMA. It doesn't need to be virtualized, it just needs to be bounds checked. Maybe I'm spoiled by good hardware, but when I wrote FireWire drivers for embedded systems, we didn't just open up DMA access to RAM willy-nilly. I honestly don't know enough about OHCI to know what the hardware setup is like, but I suspect it's just laziness.