staging: comedi: ni_mio_common: always lock in ni_ai_poll()
`ni_ai_poll()` currently acquires (and later releases) the comedi device's spin-lock iff `in_interrupt()` returns 0. However, it is only called during processing of a `COMEDI_POLL` ioctl so `in_interrupt()` will always return 0 in this case. Remove this test and acquire/release the spin-lock unconditionally. This eliminates a sparse warning about different lock contexts for basic block. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
affdc230d7
commit
3cd73bc1cf
|
@ -1766,20 +1766,18 @@ static int ni_ai_reset(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||||
|
|
||||||
static int ni_ai_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
static int ni_ai_poll(struct comedi_device *dev, struct comedi_subdevice *s)
|
||||||
{
|
{
|
||||||
unsigned long flags = 0;
|
unsigned long flags;
|
||||||
int count;
|
int count;
|
||||||
|
|
||||||
/* lock to avoid race with interrupt handler */
|
/* lock to avoid race with interrupt handler */
|
||||||
if (in_interrupt() == 0)
|
spin_lock_irqsave(&dev->spinlock, flags);
|
||||||
spin_lock_irqsave(&dev->spinlock, flags);
|
|
||||||
#ifndef PCIDMA
|
#ifndef PCIDMA
|
||||||
ni_handle_fifo_dregs(dev);
|
ni_handle_fifo_dregs(dev);
|
||||||
#else
|
#else
|
||||||
ni_sync_ai_dma(dev);
|
ni_sync_ai_dma(dev);
|
||||||
#endif
|
#endif
|
||||||
count = s->async->buf_write_count - s->async->buf_read_count;
|
count = s->async->buf_write_count - s->async->buf_read_count;
|
||||||
if (in_interrupt() == 0)
|
spin_unlock_irqrestore(&dev->spinlock, flags);
|
||||||
spin_unlock_irqrestore(&dev->spinlock, flags);
|
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue