mirror of https://gitee.com/openkylin/linux.git
staging: comedi: dt282x: fix a null pointer deref on interrupt
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:
parent
7379e6baed
commit
b8336be66d
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue