In the Linux kernel, the following vulnerability has been resolved:
comedi: comedi_parport: deal with premature interrupt
Syzbot reported a general protection fault in
comedi_get_is_subdevice_running(), which was called from the interrupt
handler parport_interrupt() in the "comedi_parport" driver, but it
does not currently have a C reproducer for the problem. It's
probably due to a premature interrupt for one of two reasons:
- The driver sets up the interrupt handler before the comedi subdevices
- The driver uses a user-supplied I/O port base address which Syzbot
Change the initialization order in the driver's comedi "attach" handler
(parport_attach()) so that the hardware registers are initialized
before the interrupt handler is requested. This should prevent
premature interrupts occurring for real hardware.
Also add a test to the interrupt handler to ensure the comedi device is fully attached and return early if it isn't.