<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/staging, branch v3.12.64</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>staging: comedi: daqboard2000: bug fix board type matching code</title>
<updated>2016-09-23T07:29:23+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2016-06-29T19:27:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1186d77797e84479057ba69cae221e5e2b06bf04'/>
<id>1186d77797e84479057ba69cae221e5e2b06bf04</id>
<content type='text'>
commit 80e162ee9b31d77d851b10f8c5299132be1e120f upstream.

`daqboard2000_find_boardinfo()` is supposed to check if the
DaqBoard/2000 series model is supported, based on the PCI subvendor and
subdevice ID.  The current code is wrong as it is comparing the PCI
device's subdevice ID to an expected, fixed value for the subvendor ID.
It should be comparing the PCI device's subvendor ID to this fixed
value.  Correct it.

Fixes: 7e8401b23e7f ("staging: comedi: daqboard2000: add back subsystem_device check")
Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 80e162ee9b31d77d851b10f8c5299132be1e120f upstream.

`daqboard2000_find_boardinfo()` is supposed to check if the
DaqBoard/2000 series model is supported, based on the PCI subvendor and
subdevice ID.  The current code is wrong as it is comparing the PCI
device's subdevice ID to an expected, fixed value for the subvendor ID.
It should be comparing the PCI device's subvendor ID to this fixed
value.  Correct it.

Fixes: 7e8401b23e7f ("staging: comedi: daqboard2000: add back subsystem_device check")
Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging: iio: accel: fix error check</title>
<updated>2016-08-19T07:50:47+00:00</updated>
<author>
<name>Luis de Bethencourt</name>
<email>luisbg@osg.samsung.com</email>
</author>
<published>2016-06-22T19:43:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=14a450ef2462fbfe75822d82840fbbb7b8e5baff'/>
<id>14a450ef2462fbfe75822d82840fbbb7b8e5baff</id>
<content type='text'>
commit ef3149eb3ddb7f9125e11c90f8330e371b55cffd upstream.

sca3000_read_ctrl_reg() returns a negative number on failure, check for
this instead of zero.

Signed-off-by: Luis de Bethencourt &lt;luisbg@osg.samsung.com&gt;
Signed-off-by: Jonathan Cameron &lt;jic23@kernel.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ef3149eb3ddb7f9125e11c90f8330e371b55cffd upstream.

sca3000_read_ctrl_reg() returns a negative number on failure, check for
this instead of zero.

Signed-off-by: Luis de Bethencourt &lt;luisbg@osg.samsung.com&gt;
Signed-off-by: Jonathan Cameron &lt;jic23@kernel.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: usbip: fix potential out-of-bounds write</title>
<updated>2016-04-23T07:24:41+00:00</updated>
<author>
<name>Ignat Korchagin</name>
<email>ignat.korchagin@gmail.com</email>
</author>
<published>2016-03-17T18:00:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3b86e790417645fa899ed658a8e17f6832cf3936'/>
<id>3b86e790417645fa899ed658a8e17f6832cf3936</id>
<content type='text'>
commit b348d7dddb6c4fbfc810b7a0626e8ec9e29f7cbb upstream.

Fix potential out-of-bounds write to urb-&gt;transfer_buffer
usbip handles network communication directly in the kernel. When receiving a
packet from its peer, usbip code parses headers according to protocol. As
part of this parsing urb-&gt;actual_length is filled. Since the input for
urb-&gt;actual_length comes from the network, it should be treated as untrusted.
Any entity controlling the network may put any value in the input and the
preallocated urb-&gt;transfer_buffer may not be large enough to hold the data.
Thus, the malicious entity is able to write arbitrary data to kernel memory.

Signed-off-by: Ignat Korchagin &lt;ignat.korchagin@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b348d7dddb6c4fbfc810b7a0626e8ec9e29f7cbb upstream.

Fix potential out-of-bounds write to urb-&gt;transfer_buffer
usbip handles network communication directly in the kernel. When receiving a
packet from its peer, usbip code parses headers according to protocol. As
part of this parsing urb-&gt;actual_length is filled. Since the input for
urb-&gt;actual_length comes from the network, it should be treated as untrusted.
Any entity controlling the network may put any value in the input and the
preallocated urb-&gt;transfer_buffer may not be large enough to hold the data.
Thus, the malicious entity is able to write arbitrary data to kernel memory.

Signed-off-by: Ignat Korchagin &lt;ignat.korchagin@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>iio: lpc32xx_adc: fix warnings caused by enabling unprepared clock</title>
<updated>2016-02-24T09:23:30+00:00</updated>
<author>
<name>Vladimir Zapolskiy</name>
<email>vz@mleia.com</email>
</author>
<published>2015-10-17T18:44:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0e2e731e57da45eca06ff8e5f1c58e891b2e66ce'/>
<id>0e2e731e57da45eca06ff8e5f1c58e891b2e66ce</id>
<content type='text'>
commit 01bb70ae0b98d266fa3e860482c7ce22fa482a6e upstream.

If common clock framework is configured, the driver generates a warning,
which is fixed by this change:

    root@devkit3250:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 724 at drivers/clk/clk.c:727 clk_core_enable+0x2c/0xa4()
    Modules linked in: sc16is7xx snd_soc_uda1380
    CPU: 0 PID: 724 Comm: cat Not tainted 4.3.0-rc2+ #198
    Hardware name: LPC32XX SoC (Flattened Device Tree)
    Backtrace:
    [&lt;&gt;] (dump_backtrace) from [&lt;&gt;] (show_stack+0x18/0x1c)
    [&lt;&gt;] (show_stack) from [&lt;&gt;] (dump_stack+0x20/0x28)
    [&lt;&gt;] (dump_stack) from [&lt;&gt;] (warn_slowpath_common+0x90/0xb8)
    [&lt;&gt;] (warn_slowpath_common) from [&lt;&gt;] (warn_slowpath_null+0x24/0x2c)
    [&lt;&gt;] (warn_slowpath_null) from [&lt;&gt;] (clk_core_enable+0x2c/0xa4)
    [&lt;&gt;] (clk_core_enable) from [&lt;&gt;] (clk_enable+0x24/0x38)
    [&lt;&gt;] (clk_enable) from [&lt;&gt;] (lpc32xx_read_raw+0x38/0x80)
    [&lt;&gt;] (lpc32xx_read_raw) from [&lt;&gt;] (iio_read_channel_info+0x70/0x94)
    [&lt;&gt;] (iio_read_channel_info) from [&lt;&gt;] (dev_attr_show+0x28/0x4c)
    [&lt;&gt;] (dev_attr_show) from [&lt;&gt;] (sysfs_kf_seq_show+0x8c/0xf0)
    [&lt;&gt;] (sysfs_kf_seq_show) from [&lt;&gt;] (kernfs_seq_show+0x2c/0x30)
    [&lt;&gt;] (kernfs_seq_show) from [&lt;&gt;] (seq_read+0x1c8/0x440)
    [&lt;&gt;] (seq_read) from [&lt;&gt;] (kernfs_fop_read+0x38/0x170)
    [&lt;&gt;] (kernfs_fop_read) from [&lt;&gt;] (do_readv_writev+0x16c/0x238)
    [&lt;&gt;] (do_readv_writev) from [&lt;&gt;] (vfs_readv+0x50/0x58)
    [&lt;&gt;] (vfs_readv) from [&lt;&gt;] (default_file_splice_read+0x1a4/0x308)
    [&lt;&gt;] (default_file_splice_read) from [&lt;&gt;] (do_splice_to+0x78/0x84)
    [&lt;&gt;] (do_splice_to) from [&lt;&gt;] (splice_direct_to_actor+0xc8/0x1cc)
    [&lt;&gt;] (splice_direct_to_actor) from [&lt;&gt;] (do_splice_direct+0xa0/0xb8)
    [&lt;&gt;] (do_splice_direct) from [&lt;&gt;] (do_sendfile+0x1a8/0x30c)
    [&lt;&gt;] (do_sendfile) from [&lt;&gt;] (SyS_sendfile64+0x104/0x10c)
    [&lt;&gt;] (SyS_sendfile64) from [&lt;&gt;] (ret_fast_syscall+0x0/0x38)

Signed-off-by: Vladimir Zapolskiy &lt;vz@mleia.com&gt;
Signed-off-by: Jonathan Cameron &lt;jic23@kernel.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 01bb70ae0b98d266fa3e860482c7ce22fa482a6e upstream.

If common clock framework is configured, the driver generates a warning,
which is fixed by this change:

    root@devkit3250:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 724 at drivers/clk/clk.c:727 clk_core_enable+0x2c/0xa4()
    Modules linked in: sc16is7xx snd_soc_uda1380
    CPU: 0 PID: 724 Comm: cat Not tainted 4.3.0-rc2+ #198
    Hardware name: LPC32XX SoC (Flattened Device Tree)
    Backtrace:
    [&lt;&gt;] (dump_backtrace) from [&lt;&gt;] (show_stack+0x18/0x1c)
    [&lt;&gt;] (show_stack) from [&lt;&gt;] (dump_stack+0x20/0x28)
    [&lt;&gt;] (dump_stack) from [&lt;&gt;] (warn_slowpath_common+0x90/0xb8)
    [&lt;&gt;] (warn_slowpath_common) from [&lt;&gt;] (warn_slowpath_null+0x24/0x2c)
    [&lt;&gt;] (warn_slowpath_null) from [&lt;&gt;] (clk_core_enable+0x2c/0xa4)
    [&lt;&gt;] (clk_core_enable) from [&lt;&gt;] (clk_enable+0x24/0x38)
    [&lt;&gt;] (clk_enable) from [&lt;&gt;] (lpc32xx_read_raw+0x38/0x80)
    [&lt;&gt;] (lpc32xx_read_raw) from [&lt;&gt;] (iio_read_channel_info+0x70/0x94)
    [&lt;&gt;] (iio_read_channel_info) from [&lt;&gt;] (dev_attr_show+0x28/0x4c)
    [&lt;&gt;] (dev_attr_show) from [&lt;&gt;] (sysfs_kf_seq_show+0x8c/0xf0)
    [&lt;&gt;] (sysfs_kf_seq_show) from [&lt;&gt;] (kernfs_seq_show+0x2c/0x30)
    [&lt;&gt;] (kernfs_seq_show) from [&lt;&gt;] (seq_read+0x1c8/0x440)
    [&lt;&gt;] (seq_read) from [&lt;&gt;] (kernfs_fop_read+0x38/0x170)
    [&lt;&gt;] (kernfs_fop_read) from [&lt;&gt;] (do_readv_writev+0x16c/0x238)
    [&lt;&gt;] (do_readv_writev) from [&lt;&gt;] (vfs_readv+0x50/0x58)
    [&lt;&gt;] (vfs_readv) from [&lt;&gt;] (default_file_splice_read+0x1a4/0x308)
    [&lt;&gt;] (default_file_splice_read) from [&lt;&gt;] (do_splice_to+0x78/0x84)
    [&lt;&gt;] (do_splice_to) from [&lt;&gt;] (splice_direct_to_actor+0xc8/0x1cc)
    [&lt;&gt;] (splice_direct_to_actor) from [&lt;&gt;] (do_splice_direct+0xa0/0xb8)
    [&lt;&gt;] (do_splice_direct) from [&lt;&gt;] (do_sendfile+0x1a8/0x30c)
    [&lt;&gt;] (do_sendfile) from [&lt;&gt;] (SyS_sendfile64+0x104/0x10c)
    [&lt;&gt;] (SyS_sendfile64) from [&lt;&gt;] (ret_fast_syscall+0x0/0x38)

Signed-off-by: Vladimir Zapolskiy &lt;vz@mleia.com&gt;
Signed-off-by: Jonathan Cameron &lt;jic23@kernel.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging/speakup: Use tty_ldisc_ref() for paste kworker</title>
<updated>2016-02-24T09:23:16+00:00</updated>
<author>
<name>Peter Hurley</name>
<email>peter@hurleysoftware.com</email>
</author>
<published>2016-01-11T06:40:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1b49b92c666d57620b3e87bf2584a0ea0bd6424e'/>
<id>1b49b92c666d57620b3e87bf2584a0ea0bd6424e</id>
<content type='text'>
commit f4f9edcf9b5289ed96113e79fa65a7bf27ecb096 upstream.

As the function documentation for tty_ldisc_ref_wait() notes, it is
only callable from a tty file_operations routine; otherwise there
is no guarantee the ref won't be NULL.

The key difference with the VT's paste_selection() is that is an ioctl,
where __speakup_paste_selection() is completely async kworker, kicked
off from interrupt context.

Fixes: 28a821c30688 ("Staging: speakup: Update __speakup_paste_selection()
       tty (ab)usage to match vt")
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit f4f9edcf9b5289ed96113e79fa65a7bf27ecb096 upstream.

As the function documentation for tty_ldisc_ref_wait() notes, it is
only callable from a tty file_operations routine; otherwise there
is no guarantee the ref won't be NULL.

The key difference with the VT's paste_selection() is that is an ioctl,
where __speakup_paste_selection() is completely async kworker, kicked
off from interrupt context.

Fixes: 28a821c30688 ("Staging: speakup: Update __speakup_paste_selection()
       tty (ab)usage to match vt")
Signed-off-by: Peter Hurley &lt;peter@hurleysoftware.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging/dgnc: fix info leak in ioctl</title>
<updated>2016-01-15T08:31:27+00:00</updated>
<author>
<name>Salva Peiró</name>
<email>speirofr@gmail.com</email>
</author>
<published>2015-10-14T15:48:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=39c9944afb08c26ff36ae1967497d44fcf5a87ed'/>
<id>39c9944afb08c26ff36ae1967497d44fcf5a87ed</id>
<content type='text'>
commit 4b6184336ebb5c8dc1eae7f7ab46ee608a748b05 upstream.

The dgnc_mgmt_ioctl() code fails to initialize the 16 _reserved bytes of
struct digi_dinfo after the -&gt;dinfo_nboards member. Add an explicit
memset(0) before filling the structure to avoid the info leak.

Signed-off-by: Salva Peiró &lt;speirofr@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: Yuki Machida &lt;machida.yuki@jp.fujitsu.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 4b6184336ebb5c8dc1eae7f7ab46ee608a748b05 upstream.

The dgnc_mgmt_ioctl() code fails to initialize the 16 _reserved bytes of
struct digi_dinfo after the -&gt;dinfo_nboards member. Add an explicit
memset(0) before filling the structure to avoid the info leak.

Signed-off-by: Salva Peiró &lt;speirofr@gmail.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: Yuki Machida &lt;machida.yuki@jp.fujitsu.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>staging: rtl8712: Add device ID for Sitecom WLA2100</title>
<updated>2016-01-05T15:23:34+00:00</updated>
<author>
<name>Larry Finger</name>
<email>Larry.Finger@lwfinger.net</email>
</author>
<published>2015-10-19T03:14:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2d9686f0a68348ba87e14992b72eee2df1717c77'/>
<id>2d9686f0a68348ba87e14992b72eee2df1717c77</id>
<content type='text'>
commit 1e6e63283691a2a9048a35d9c6c59cf0abd342e4 upstream.

This adds the USB ID for the Sitecom WLA2100. The Windows 10 inf file
was checked to verify that the addition is correct.

Reported-by: Frans van de Wiel &lt;fvdw@fvdw.eu&gt;
Signed-off-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: Frans van de Wiel &lt;fvdw@fvdw.eu&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 1e6e63283691a2a9048a35d9c6c59cf0abd342e4 upstream.

This adds the USB ID for the Sitecom WLA2100. The Windows 10 inf file
was checked to verify that the addition is correct.

Reported-by: Frans van de Wiel &lt;fvdw@fvdw.eu&gt;
Signed-off-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
Cc: Frans van de Wiel &lt;fvdw@fvdw.eu&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging: speakup: fix speakup-r regression</title>
<updated>2015-10-28T15:38:09+00:00</updated>
<author>
<name>covici@ccs.covici.com</name>
<email>covici@ccs.covici.com</email>
</author>
<published>2015-05-20T09:44:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=72b640d14c72d71fc832d4349741292e49586a80'/>
<id>72b640d14c72d71fc832d4349741292e49586a80</id>
<content type='text'>
commit b1d562acc78f0af46de0dfe447410bc40bdb7ece upstream.

Here is a patch to make speakup-r work again.

It broke in 3.6 due to commit 4369c64c79a22b98d3b7eff9d089196cd878a10a
"Input: Send events one packet at a time)

The problem was that the fakekey.c routine to fake a down arrow no
longer functioned properly and putting the input_sync fixed it.

Fixes: 4369c64c79a22b98d3b7eff9d089196cd878a10a
Acked-by: Samuel Thibault &lt;samuel.thibault@ens-lyon.org&gt;
Signed-off-by: John Covici &lt;covici@ccs.covici.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b1d562acc78f0af46de0dfe447410bc40bdb7ece upstream.

Here is a patch to make speakup-r work again.

It broke in 3.6 due to commit 4369c64c79a22b98d3b7eff9d089196cd878a10a
"Input: Send events one packet at a time)

The problem was that the fakekey.c routine to fake a down arrow no
longer functioned properly and putting the input_sync fixed it.

Fixes: 4369c64c79a22b98d3b7eff9d089196cd878a10a
Acked-by: Samuel Thibault &lt;samuel.thibault@ens-lyon.org&gt;
Signed-off-by: John Covici &lt;covici@ccs.covici.com&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>staging: comedi: adl_pci7x3x: fix digital output on PCI-7230</title>
<updated>2015-09-18T07:26:31+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2015-09-16T09:58:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bf9adcbe5206ddd199d7447f1d79729a7980dbdd'/>
<id>bf9adcbe5206ddd199d7447f1d79729a7980dbdd</id>
<content type='text'>
commit ad83dbd974feb2e2a8cc071a1d28782bd4d2c70e upstream

The "adl_pci7x3x" driver replaced the "adl_pci7230" and "adl_pci7432"
drivers in commits 8f567c373c4b ("staging: comedi: new adl_pci7x3x
driver") and 657f77d173d3 ("staging: comedi: remove adl_pci7230 and
adl_pci7432 drivers").  Although the new driver code agrees with the
user manuals for the respective boards, digital outputs stopped working
on the PCI-7230.  This has 16 digital output channels and the previous
adl_pci7230 driver shifted the 16 bit output state left by 16 bits
before writing to the hardware register.  The new adl_pci7x3x driver
doesn't do that.  Fix it in `adl_pci7x3x_do_insn_bits()` by checking
for the special case of the subdevice having only 16 channels and
duplicating the 16 bit output state into both halves of the 32-bit
register.  That should work both for what the board actually does and
for what the user manual says it should do.

Fixes: 8f567c373c4b ("staging: comedi: new adl_pci7x3x driver")
Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ad83dbd974feb2e2a8cc071a1d28782bd4d2c70e upstream

The "adl_pci7x3x" driver replaced the "adl_pci7230" and "adl_pci7432"
drivers in commits 8f567c373c4b ("staging: comedi: new adl_pci7x3x
driver") and 657f77d173d3 ("staging: comedi: remove adl_pci7230 and
adl_pci7432 drivers").  Although the new driver code agrees with the
user manuals for the respective boards, digital outputs stopped working
on the PCI-7230.  This has 16 digital output channels and the previous
adl_pci7230 driver shifted the 16 bit output state left by 16 bits
before writing to the hardware register.  The new adl_pci7x3x driver
doesn't do that.  Fix it in `adl_pci7x3x_do_insn_bits()` by checking
for the special case of the subdevice having only 16 channels and
duplicating the 16 bit output state into both halves of the 32-bit
register.  That should work both for what the board actually does and
for what the user manual says it should do.

Fixes: 8f567c373c4b ("staging: comedi: new adl_pci7x3x driver")
Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>staging: comedi: usbduxsigma: don't clobber ao_timer in command test</title>
<updated>2015-09-18T07:26:30+00:00</updated>
<author>
<name>Ian Abbott</name>
<email>abbotti@mev.co.uk</email>
</author>
<published>2015-09-16T13:19:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=92ca2aaa4cc43fd8bb1cd018d7183a2d68352b2e'/>
<id>92ca2aaa4cc43fd8bb1cd018d7183a2d68352b2e</id>
<content type='text'>
commit c04a1f17803e0d3eeada586ca34a6b436959bc20 upstream

`devpriv-&gt;ao_timer` is used while an asynchronous command is running on
the AO subdevice.  It also gets modified by the subdevice's `cmdtest`
handler for checking new asynchronous commands,
`usbduxsigma_ao_cmdtest()`, which is not correct as it's allowed to
check new commands while an old command is still running.  Fix it by
moving the code which sets up `devpriv-&gt;ao_timer` into the subdevice's
`cmd` handler, `usbduxsigma_ao_cmd()`.

** This backported patch also moves the code that sets up
`devpriv-&gt;ao_sample_count` and `devpriv-&gt;ao_continuous` from
`usbduxsigma_ao_cmdtest()` to `usbduxsigma_ao_cmd()` for the same reason
as above.  (This was not needed in the upstream commit.) **

Note that the removed code in `usbduxsigma_ao_cmdtest()` checked that
`devpriv-&gt;ao_timer` did not end up less that 1, but that could not
happen due because `cmd-&gt;scan_begin_arg` or `cmd-&gt;convert_arg` had
already been range-checked.

Also note that we tested the `high_speed` variable in the old code, but
that is currently always 0 and means that we always use "scan" timing
(`cmd-&gt;scan_begin_src == TRIG_TIMER` and `cmd-&gt;convert_src == TRIG_NOW`)
and never "convert" (individual sample) timing (`cmd-&gt;scan_begin_src ==
TRIG_FOLLOW` and `cmd-&gt;convert_src == TRIG_TIMER`).  The moved code
tests `cmd-&gt;convert_src` instead to decide whether "scan" or "convert"
timing is being used, although currently only "scan" timing is
supported.

Fixes: fb1ef622e7a3 ("staging: comedi: usbduxsigma: tidy up analog output command support")
Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c04a1f17803e0d3eeada586ca34a6b436959bc20 upstream

`devpriv-&gt;ao_timer` is used while an asynchronous command is running on
the AO subdevice.  It also gets modified by the subdevice's `cmdtest`
handler for checking new asynchronous commands,
`usbduxsigma_ao_cmdtest()`, which is not correct as it's allowed to
check new commands while an old command is still running.  Fix it by
moving the code which sets up `devpriv-&gt;ao_timer` into the subdevice's
`cmd` handler, `usbduxsigma_ao_cmd()`.

** This backported patch also moves the code that sets up
`devpriv-&gt;ao_sample_count` and `devpriv-&gt;ao_continuous` from
`usbduxsigma_ao_cmdtest()` to `usbduxsigma_ao_cmd()` for the same reason
as above.  (This was not needed in the upstream commit.) **

Note that the removed code in `usbduxsigma_ao_cmdtest()` checked that
`devpriv-&gt;ao_timer` did not end up less that 1, but that could not
happen due because `cmd-&gt;scan_begin_arg` or `cmd-&gt;convert_arg` had
already been range-checked.

Also note that we tested the `high_speed` variable in the old code, but
that is currently always 0 and means that we always use "scan" timing
(`cmd-&gt;scan_begin_src == TRIG_TIMER` and `cmd-&gt;convert_src == TRIG_NOW`)
and never "convert" (individual sample) timing (`cmd-&gt;scan_begin_src ==
TRIG_FOLLOW` and `cmd-&gt;convert_src == TRIG_TIMER`).  The moved code
tests `cmd-&gt;convert_src` instead to decide whether "scan" or "convert"
timing is being used, although currently only "scan" timing is
supported.

Fixes: fb1ef622e7a3 ("staging: comedi: usbduxsigma: tidy up analog output command support")
Signed-off-by: Ian Abbott &lt;abbotti@mev.co.uk&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
</feed>
