linux/drivers/staging
Ian Abbott 96baebd41a staging: comedi: ni_65xx: (bug fix) confine insn_bits to one subdevice
commit 677a315656 upstream.

The `insn_bits` handler `ni_65xx_dio_insn_bits()` has a `for` loop that
currently writes (optionally) and reads back up to 5 "ports" consisting
of 8 channels each.  It reads up to 32 1-bit channels but can only read
and write a whole port at once - it needs to handle up to 5 ports as the
first channel it reads might not be aligned on a port boundary.  It
breaks out of the loop early if the next port it handles is beyond the
final port on the card.  It also breaks out early on the 5th port in the
loop if the first channel was aligned.  Unfortunately, it doesn't check
that the current port it is dealing with belongs to the comedi subdevice
the `insn_bits` handler is acting on.  That's a bug.

Redo the `for` loop to terminate after the final port belonging to the
subdevice, changing the loop variable in the process to simplify things
a bit.  The `for` loop could now try and handle more than 5 ports if the
subdevice has more than 40 channels, but the test `if (bitshift >= 32)`
ensures it will break out early after 4 or 5 ports (depending on whether
the first channel is aligned on a port boundary).  (`bitshift` will be
between -7 and 7 inclusive on the first iteration, increasing by 8 for
each subsequent operation.)

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-10-13 16:08:33 -07:00
..
android staging: android: logger: Correct write offset reset on error 2013-08-04 16:50:51 +08:00
asus_oled
bcm
ced1401
comedi staging: comedi: ni_65xx: (bug fix) confine insn_bits to one subdevice 2013-10-13 16:08:33 -07:00
cptm1217
crystalhd
csr staging: single_open() leaks 2013-05-05 00:15:43 -04:00
cxt1e1 staging: single_open() leaks 2013-05-05 00:15:43 -04:00
dgrp Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
dwc2 staging: dwc2: fix value of dma_mask 2013-05-30 21:14:30 +09:00
echo
et131x
frontier
ft1000 staging: single_open() leaks 2013-05-05 00:15:43 -04:00
fwserial TTY/Serial driver update for 3.10-rc1 2013-04-29 12:16:17 -07:00
gdm72xx USB: remove remaining instances of USB_SUSPEND 2013-05-15 13:44:44 -04:00
goldfish
iio iio: mxs-lradc: Remove useless check in read_raw 2013-09-26 17:18:05 -07:00
imx-drm imx-drm: imx-drm-core: Export imx_drm_encoder_get_mux_id 2013-09-07 22:10:00 -07:00
keucr
line6 staging: line6: Fix unlocked snd_pcm_stop() call 2013-07-25 14:07:42 -07:00
media Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2013-06-18 06:25:08 -10:00
netlogic
nvec Staging driver fixes for 3.10-rc2 2013-05-23 09:27:49 -07:00
octeon
olpc_dcon
ozwpan staging/ozwpan: info leak in oz_cdev_ioctl() 2013-04-22 10:25:46 -07:00
panel
phison
quickstart
rtl8187se staging: single_open() leaks 2013-05-05 00:15:43 -04:00
rtl8192e hostap: Don't use create_proc_read_entry() 2013-04-29 15:41:56 -04:00
rtl8192u staging: single_open() leaks 2013-05-05 00:15:43 -04:00
rtl8712
rts5139 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
sb105x
sbe-2t3e3
sep staging: sep: fix driver build and kconfig 2013-05-16 15:37:49 -07:00
serqt_usb2
silicom Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
slicoss
sm7xxfb
speakup staging: speakup: remove custom string_unescape_any_inplace 2013-04-30 17:04:03 -07:00
ste_rmi4 staging: ste_rmi4: Suppress 'ignoring return value of ‘regulator_enable()' warning 2013-05-16 15:37:49 -07:00
ti-soc-thermal
tidspbridge
usbip
vme
vt6655 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-05-01 17:51:54 -07:00
vt6656 staging: vt6656: [BUG] iwctl_siwencodeext return if device not open 2013-10-05 07:13:10 -07:00
winbond
wlags49_h2 staging: single_open() leaks 2013-05-05 00:15:43 -04:00
wlags49_h25
wlan-ng
xgifb
zcache staging: zcache: fix "zcache=" kernel parameter 2013-08-14 22:59:06 -07:00
zram zram: allow request end to coincide with disksize 2013-08-14 22:59:09 -07:00
zsmalloc staging/zsmalloc: don't use pgtable-mapping from modules 2013-04-23 10:34:20 -07:00
Kconfig staging: Swap zram and zsmalloc in Kconfig 2013-05-16 15:38:58 -07:00
Makefile
staging.c