OpenCloudOS-Kernel/drivers/staging/comedi
Ian Abbott f0f4b0cc3a staging: comedi: ni_mio_common: fix AO inttrig backwards compatibility
Commit ebb657babf ("staging: comedi: ni_mio_common: clarify the
cmd->start_arg validation and use") introduced a backwards compatibility
issue in the use of asynchronous commands on the AO subdevice when
`start_src` is `TRIG_EXT`.  Valid values for `start_src` are `TRIG_INT`
(for internal, software trigger), and `TRIG_EXT` (for external trigger).
When set to `TRIG_EXT`.  In both cases, the driver relies on an
internal, software trigger to set things up (allowing the user
application to write sufficient samples to the data buffer before the
trigger), so it acts as a software "pre-trigger" in the `TRIG_EXT` case.
The software trigger is handled by `ni_ao_inttrig()`.

Prior to the above change, when `start_src` was `TRIG_INT`, `start_arg`
was required to be 0, and `ni_ao_inttrig()` checked that the software
trigger number was also 0.  After the above change, when `start_src` was
`TRIG_INT`, any value was allowed for `start_arg`, and `ni_ao_inttrig()`
checked that the software trigger number matched this `start_arg` value.
The backwards compatibility issue is that the internal trigger number
now has to match `start_arg` when `start_src` is `TRIG_EXT` when it
previously had to be 0.

Fix the backwards compatibility issue in `ni_ao_inttrig()` by always
allowing software trigger number 0 when `start_src` is something other
than `TRIG_INT`.

Thanks to Spencer Olson for reporting the issue.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Reported-by: Spencer Olson <olsonse@umich.edu>
Fixes: ebb657babf ("staging: comedi: ni_mio_common: clarify the cmd->start_arg validation and use")
Cc: stable <stable@vger.kernel.org>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-08-21 17:07:19 +02:00
..
drivers staging: comedi: ni_mio_common: fix AO inttrig backwards compatibility 2016-08-21 17:07:19 +02:00
kcomedilib staging: comedi: kcomedilib: Fixed coding style issue 2015-09-12 18:24:38 -07:00
Kconfig staging: comedi: adv_pci_dio: separate out PCI-1760 support 2015-12-18 14:54:24 -08:00
Makefile
TODO comedi: note a coverity discovered hole that needs fixing 2016-03-05 14:56:55 -08:00
comedi.h staging:comedi:Use unsigned int instead of unsigned 2016-06-17 20:43:07 -07:00
comedi_buf.c Staging: comedi: comedi_buf: Replace 'unsigned' with 'unsigned int' 2016-03-28 07:30:36 -07:00
comedi_compat32.c staging: comedi: fix cast warning in comedi_compat32.c 2015-07-14 18:21:15 -07:00
comedi_compat32.h
comedi_fops.c staging: comedi: avoid using timeval 2016-06-17 21:14:34 -07:00
comedi_internal.h staging: comedi: add new comedi_buf_write_n_available() 2015-10-13 10:28:40 -07:00
comedi_pci.c staging: comedi: comedi_pci.c: Fix kernel-doc Return tags 2015-10-02 11:43:21 +02:00
comedi_pci.h
comedi_pcmcia.c staging: comedi: comedi_pcmcia.c: improve function documentation 2015-10-02 11:43:21 +02:00
comedi_pcmcia.h STAGING: COMEDI: Wrap line over 80 characters 2016-02-07 18:38:37 -08:00
comedi_usb.c staging: comedi: comedi_usb.c: improve function documentation 2015-10-02 11:43:21 +02:00
comedi_usb.h
comedidev.h Staging: comedi: Fix 'unsigned' warning style 2016-03-29 12:45:23 -07:00
comedilib.h staging: comedi: comedilib.h: Coding style warning fix for block comments 2015-12-21 16:01:12 -08:00
drivers.c staging: comedi: drivers: fix possible bug in comedi_handle_events() 2016-03-30 21:04:53 -07:00
proc.c
range.c staging: comedi: improve comedi_check_chanlist() documentation 2015-08-05 11:55:44 -07:00