staging: comedi: cb_pcidas64: Fix external_ai_queue_in_use()
authorIan Abbott <abbotti@mev.co.uk>
Fri, 23 Mar 2018 13:54:33 +0000 (13:54 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 23 Mar 2018 14:55:21 +0000 (15:55 +0100)
commit9eb7194690ba358db58da3180b11e526496481bc
tree8d66c64a659b4ce4dcb8f27cf240ba0041a100b5
parent5d20e467dfadf14b9437d2b04040a3a342974ec9
staging: comedi: cb_pcidas64: Fix external_ai_queue_in_use()

`external_ai_queue_in_use()` is supposed to return 1 if the external
channel sequencer is in use by an AI command, else return 0.  If the
"read" subdevice (which is the AI subdevice) is not busy then no AI
command is running so the external channel sequencer is not in use, so
the function should return 0.  Unfortunately, the function's "read"
subdevice busy test is inverted, so the function always returns 0 when
the "read" subdevice is busy.  Worse, if the "read" subdevice is
not busy the subsequent call to `use_internal_queue_6xxx()` results in a
null pointer dereference if a previous AI command used a channel list
with a length greater than 1.

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