staging: comedi: addi_apci_2032: set COMEDI_CB_OVERFLOW
authorIan Abbott <abbotti@mev.co.uk>
Mon, 3 Dec 2012 18:15:42 +0000 (18:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Jan 2013 22:10:01 +0000 (14:10 -0800)
If the call to `comedi_buf_put()` fails in the interrupt routine, set
the `COMEDI_CB_OVERFLOW` event flag.  Note that the `COMEDI_CB_ERROR`
flag will have also been set by `comedi_buf_put()` in this case.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/addi_apci_2032.c

index f04f59d33cc797e97c238b4da52e25d1de28af87..aeb34dbe02a4ad4f4412aa44d53b719566121a60 100644 (file)
@@ -248,8 +248,10 @@ static irqreturn_t apci2032_interrupt(int irq, void *d)
        s->state = inl(dev->iobase + APCI2032_INT_STATUS_REG);
        outl(0x0, dev->iobase + APCI2032_INT_CTRL_REG);
 
-       comedi_buf_put(s->async, s->state);
-       s->async->events |= COMEDI_CB_BLOCK | COMEDI_CB_EOS;
+       if (comedi_buf_put(s->async, s->state))
+               s->async->events |= COMEDI_CB_BLOCK | COMEDI_CB_EOS;
+       else
+               s->async->events |= COMEDI_CB_OVERFLOW;
        comedi_event(dev, s);
 
        return IRQ_HANDLED;