lkml.org 
[lkml]   [2019]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 24/40] staging: comedi: amplc_pci230: fix null pointer deref on interrupt
    Date
    From: Ian Abbott <abbotti@mev.co.uk>

    commit 7379e6baeddf580d01feca650ec1ad508b6ea8ee upstream.

    The interrupt handler `pci230_interrupt()` causes a null pointer
    dereference for a PCI260 card. There is no analog output subdevice for
    a PCI260. The `dev->write_subdev` subdevice pointer and therefore the
    `s_ao` subdevice pointer variable will be `NULL` for a PCI260. The
    following call near the end of the interrupt handler results in the null
    pointer dereference for a PCI260:

    comedi_handle_events(dev, s_ao);

    Fix it by only calling the above function if `s_ao` is valid.

    Note that the other uses of `s_ao` in the calls
    `pci230_handle_ao_nofifo(dev, s_ao);` and `pci230_handle_ao_fifo(dev,
    s_ao);` will never be reached for a PCI260, so they are safe.

    Fixes: 39064f23284c ("staging: comedi: amplc_pci230: 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>

    ---
    drivers/staging/comedi/drivers/amplc_pci230.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/drivers/staging/comedi/drivers/amplc_pci230.c
    +++ b/drivers/staging/comedi/drivers/amplc_pci230.c
    @@ -2324,7 +2324,8 @@ static irqreturn_t pci230_interrupt(int
    devpriv->intr_running = false;
    spin_unlock_irqrestore(&devpriv->isr_spinlock, irqflags);

    - comedi_handle_events(dev, s_ao);
    + if (s_ao)
    + comedi_handle_events(dev, s_ao);
    comedi_handle_events(dev, s_ai);

    return IRQ_HANDLED;

    \
     
     \ /
      Last update: 2019-07-18 05:16    [W:4.150 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site