mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
staging: comedi: dt282x: fix a null pointer deref on interrupt
commitb8336be66dupstream. The interrupt handler `dt282x_interrupt()` causes a null pointer dereference for those supported boards that have no analog output support. For these boards, `dev->write_subdev` will be `NULL` and therefore the `s_ao` subdevice pointer variable will be `NULL`. In that case, the following call near the end of the interrupt handler results in a null pointer dereference: comedi_handle_events(dev, s_ao); Fix it by only calling the above function if `s_ao` is valid. (There are other uses of `s_ao` by the interrupt handler that may or may not be reached depending on values of hardware registers. Trust that they are reliable for now.) Note: commit4f6f009b20("staging: comedi: dt282x: use comedi_handle_events()") propagates an earlier error from commitf21c74fa4c("staging: comedi: dt282x: use cfc_handle_events()"). Fixes:4f6f009b20("staging: comedi: dt282x: use comedi_handle_events()") Cc: <stable@vger.kernel.org> # v3.19+ Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2306902921
commit
99e5f88e3e
@@ -557,7 +557,8 @@ static irqreturn_t dt282x_interrupt(int irq, void *d)
|
||||
}
|
||||
#endif
|
||||
comedi_handle_events(dev, s);
|
||||
comedi_handle_events(dev, s_ao);
|
||||
if (s_ao)
|
||||
comedi_handle_events(dev, s_ao);
|
||||
|
||||
return IRQ_RETVAL(handled);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user