]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit8e62dfafd84f470539ad06c70fec21fbbcfb5c47
tree8d66c64a659b4ce4dcb8f27cf240ba0041a100b5
parentcfc1664bb693e1dd821dc5d65c3ba1f064adacb9
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