linux-stable/drivers/staging
Ian Abbott f3cc7058d6 staging: comedi: ni_routes: allow partial routing information
commit 9fea3a40f6 upstream.

This patch fixes a regression on setting up asynchronous commands to use
external trigger sources when board-specific routing information is
missing.

`ni_find_device_routes()` (called via `ni_assign_device_routes()`) finds
the table of register values for the device family and the set of valid
routes for the specific board.  If both are found,
`tables->route_values` is set to point to the table of register values
for the device family and `tables->valid_routes` is set to point to the
list of valid routes for the specific board.  If either is not found,
both `tables->route_values` and `tables->valid_routes` are left set at
their initial null values (initialized by `ni_assign_device_routes()`)
and the function returns `-ENODATA`.

Returning an error results in some routing functionality being disabled.
Unfortunately, leaving `table->route_values` set to `NULL` also breaks
the setting up of asynchronous commands that are configured to use
external trigger sources.  Calls to `ni_check_trigger_arg()` or
`ni_check_trigger_arg_roffs()` while checking the asynchronous command
set-up would result in a null pointer dereference if
`table->route_values` is `NULL`.  The null pointer dereference is fixed
in another patch, but it now results in failure to set up the
asynchronous command.  That is a regression from the behavior prior to
commit 347e244884 ("staging: comedi: tio: implement global tio/ctr
routing") and commit 56d0b826d3 ("staging: comedi: ni_mio_common:
implement new routing for TRIG_EXT").

Change `ni_find_device_routes()` to set `tables->route_values` and/or
`tables->valid_routes` to valid information even if the other one can
only be set to `NULL` due to missing information.  The function will
still return an error in that case.  This should result in
`tables->valid_routes` being valid for all currently supported device
families even if the board-specific routing information is missing.
That should be enough to fix the regression on setting up asynchronous
commands to use external triggers for boards with missing routing
information.

Fixes: 347e244884 ("staging: comedi: tio: implement global tio/ctr routing")
Fixes: 56d0b826d3 ("staging: comedi: ni_mio_common: implement new routing for TRIG_EXT").
Cc: <stable@vger.kernel.org> # 4.20+
Cc: Spencer E. Olson <olsonse@umich.edu>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20200114182532.132058-3-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-01-23 08:22:35 +01:00
..
android mm: introduce page_size() 2019-09-24 15:54:08 -07:00
axis-fifo staging: axis-fifo: add unspecified HAS_IOMEM dependency 2020-01-12 12:21:35 +01:00
board
clocking-wizard
comedi staging: comedi: ni_routes: allow partial routing information 2020-01-23 08:22:35 +01:00
emxx_udc staging: emxx_udc: remove local TRUE/FALSE definition 2019-09-12 10:35:51 +01:00
exfat staging: exfat: fix multiple definition error of `rename_file' 2019-12-17 19:55:33 +01:00
fbtft fbtft: Make sure string is NULL terminated 2019-12-31 16:45:42 +01:00
fieldbus dt-bindings: anybus-controller: move to staging/ tree 2019-09-12 10:35:51 +01:00
fsl-dpaa2 staging: fsl-dpaa2/ethsw: do not force user to bring interface down 2019-08-14 16:46:25 +02:00
fwserial
gasket Staging: gasket: Use temporaries to reduce line length. 2019-09-12 10:38:45 +01:00
gdm724x
goldfish staging: Remove dev_err() usage after platform_get_irq() 2019-07-30 20:50:04 +02:00
greybus staging: greybus: light: fix a couple double frees 2019-09-03 09:39:10 +02:00
gs_fpgaboot
iio staging: iio: ad9834: add a check for devm_clk_get 2019-12-31 16:44:11 +01:00
isdn staging: gigaset: add endpoint-type sanity check 2019-12-17 19:55:36 +01:00
kpc2000 staging: kpc2000: Fix long constant sparse warning 2019-09-03 09:39:48 +02:00
ks7010
media media: intel-ipu3: Align struct ipu3_uapi_awb_fr_config_s to 32 bytes 2020-01-17 19:49:06 +01:00
most staging: most: sound: Fix error path of audio_init 2019-08-28 22:22:13 +02:00
mt7621-dma staging: Remove dev_err() usage after platform_get_irq() 2019-07-30 20:50:04 +02:00
mt7621-dts
mt7621-pci MIPS: ralink: enable PCI support only if driver for mt7621 SoC is selected 2019-12-31 16:45:29 +01:00
mt7621-pci-phy
mt7621-pinctrl
netlogic
nvec staging: nvec: make use of devm_platform_ioremap_resource 2019-09-12 10:35:50 +01:00
octeon staging/octeon: Use stubs for MIPS && !CAVIUM_OCTEON_SOC 2019-12-13 08:42:19 +01:00
octeon-usb usb: add a HCD_DMA flag instead of guestimating DMA capabilities 2019-08-21 10:03:35 -07:00
olpc_dcon staging: olpc_dcon: Remove TODO item 2019-07-30 09:52:04 +02:00
pi433 staging: pi433: Fix typo in documentation 2019-09-06 18:20:33 +02:00
qlge
ralink-gdma staging: Remove dev_err() usage after platform_get_irq() 2019-07-30 20:50:04 +02:00
rtl8188eu staging: rtl8188eu: Add device code for TP-Link TL-WN727N v5.21 2020-01-14 20:08:32 +01:00
rtl8192e staging: rtl8192e: fix potential use after free 2019-12-04 22:30:47 +01:00
rtl8192u staging: rtl8192u: fix multiple memory leaks on error path 2019-12-31 16:43:10 +01:00
rtl8712 staging: rtl8712: fix interface sanity check 2019-12-17 19:55:34 +01:00
rtl8723bs staging: rtl8723bs: Add 024c:0525 to the list of SDIO device-ids 2019-12-04 22:30:47 +01:00
rts5208 staging: rts5208: Fix checkpath warning 2019-09-03 09:36:29 +02:00
sm750fb staging: sm750fb: fix odd license text 2019-08-15 14:43:57 +02:00
speakup staging: speakup: document sysfs attributes 2019-10-04 10:06:05 +02:00
unisys Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2019-08-19 11:54:03 -07:00
uwb USB: Move wusbcore and UWB to staging as it is obsolete 2019-08-08 07:52:01 +02:00
vc04_services staging: vchiq: call unregister_chrdev_region() when driver registration fails 2019-12-17 19:55:34 +01:00
vme
vt6655 staging: vt6655: Fix memory leak in vt6655_probe 2019-10-07 12:34:55 +02:00
vt6656 staging: vt6656: remove bool from vnt_radio_power_on ret 2020-01-14 20:08:36 +01:00
wilc1000 staging: wilc1000: check if device is initialzied before changing vif 2019-12-31 16:44:28 +01:00
wlan-ng staging/wlan-ng: add CRC32 dependency in Kconfig 2020-01-09 10:19:46 +01:00
wusbcore staging: wusbcore: Fix build error without CONFIG_USB 2019-08-09 14:56:57 +02:00
Kconfig Remove VirtualBox guest shared folders filesystem 2019-11-12 15:22:24 -08:00
Makefile Remove VirtualBox guest shared folders filesystem 2019-11-12 15:22:24 -08:00