mirror of https://gitee.com/openkylin/linux.git
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)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
unsigned long flags;
|
||||
int count;
|
||||
|
||||
/* 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
|
||||
ni_handle_fifo_dregs(dev);
|
||||
#else
|
||||
ni_sync_ai_dma(dev);
|
||||
#endif
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue