<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers, branch v4.9.95</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>Revert "net: phy: micrel: Restore led_mode and clk_sel on resume"</title>
<updated>2018-04-20T06:21:08+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2018-04-19T14:00:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c3ba64bb3a6c8a4bc9fd3fd4e3a882e66f1942fa'/>
<id>c3ba64bb3a6c8a4bc9fd3fd4e3a882e66f1942fa</id>
<content type='text'>
This reverts commit d7ba3c00047dfd88fe0360a2d27169b54c88c4f1 which was
commit 79e498a9c7da0737829ff864aae44df434105676 upstream.

Turns out it breaks things, so drop it.

Reported-by: Naresh Kamboju &lt;naresh.kamboju@linaro.org&gt;
Cc: Leonard Crestez &lt;leonard.crestez@nxp.com&gt;
Cc: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Cc: Dan Rue &lt;dan.rue@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit d7ba3c00047dfd88fe0360a2d27169b54c88c4f1 which was
commit 79e498a9c7da0737829ff864aae44df434105676 upstream.

Turns out it breaks things, so drop it.

Reported-by: Naresh Kamboju &lt;naresh.kamboju@linaro.org&gt;
Cc: Leonard Crestez &lt;leonard.crestez@nxp.com&gt;
Cc: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
Cc: Dan Rue &lt;dan.rue@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>lan78xx: Correctly indicate invalid OTP</title>
<updated>2018-04-20T06:21:08+00:00</updated>
<author>
<name>Phil Elwell</name>
<email>phil@raspberrypi.org</email>
</author>
<published>2018-04-11T09:59:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=82236561095d64471a3a38d3a8f1fd7d815df3dd'/>
<id>82236561095d64471a3a38d3a8f1fd7d815df3dd</id>
<content type='text'>
[ Upstream commit 4bfc33807a9a02764bdd1e42e794b3b401240f27 ]

lan78xx_read_otp tries to return -EINVAL in the event of invalid OTP
content, but the value gets overwritten before it is returned and the
read goes ahead anyway. Make the read conditional as it should be
and preserve the error code.

Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
Signed-off-by: Phil Elwell &lt;phil@raspberrypi.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 4bfc33807a9a02764bdd1e42e794b3b401240f27 ]

lan78xx_read_otp tries to return -EINVAL in the event of invalid OTP
content, but the value gets overwritten before it is returned and the
read goes ahead anyway. Make the read conditional as it should be
and preserve the error code.

Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
Signed-off-by: Phil Elwell &lt;phil@raspberrypi.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>vhost: fix vhost_vq_access_ok() log check</title>
<updated>2018-04-20T06:21:07+00:00</updated>
<author>
<name>Stefan Hajnoczi</name>
<email>stefanha@redhat.com</email>
</author>
<published>2018-04-11T02:35:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=72de9891b5f46f1f98e7e6243c47076a4b4daa3c'/>
<id>72de9891b5f46f1f98e7e6243c47076a4b4daa3c</id>
<content type='text'>
[ Upstream commit d14d2b78090c7de0557362b26a4ca591aa6a9faa ]

Commit d65026c6c62e7d9616c8ceb5a53b68bcdc050525 ("vhost: validate log
when IOTLB is enabled") introduced a regression.  The logic was
originally:

  if (vq-&gt;iotlb)
      return 1;
  return A &amp;&amp; B;

After the patch the short-circuit logic for A was inverted:

  if (A || vq-&gt;iotlb)
      return A;
  return B;

This patch fixes the regression by rewriting the checks in the obvious
way, no longer returning A when vq-&gt;iotlb is non-NULL (which is hard to
understand).

Reported-by: syzbot+65a84dde0214b0387ccd@syzkaller.appspotmail.com
Cc: Jason Wang &lt;jasowang@redhat.com&gt;
Signed-off-by: Stefan Hajnoczi &lt;stefanha@redhat.com&gt;
Acked-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit d14d2b78090c7de0557362b26a4ca591aa6a9faa ]

Commit d65026c6c62e7d9616c8ceb5a53b68bcdc050525 ("vhost: validate log
when IOTLB is enabled") introduced a regression.  The logic was
originally:

  if (vq-&gt;iotlb)
      return 1;
  return A &amp;&amp; B;

After the patch the short-circuit logic for A was inverted:

  if (A || vq-&gt;iotlb)
      return A;
  return B;

This patch fixes the regression by rewriting the checks in the obvious
way, no longer returning A when vq-&gt;iotlb is non-NULL (which is hard to
understand).

Reported-by: syzbot+65a84dde0214b0387ccd@syzkaller.appspotmail.com
Cc: Jason Wang &lt;jasowang@redhat.com&gt;
Signed-off-by: Stefan Hajnoczi &lt;stefanha@redhat.com&gt;
Acked-by: Michael S. Tsirkin &lt;mst@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>slip: Check if rstate is initialized before uncompressing</title>
<updated>2018-04-20T06:21:07+00:00</updated>
<author>
<name>Tejaswi Tanikella</name>
<email>tejaswit@codeaurora.org</email>
</author>
<published>2018-04-11T11:04:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0eecffb5e95390e72c5ac0c6d184881c14ad1b3a'/>
<id>0eecffb5e95390e72c5ac0c6d184881c14ad1b3a</id>
<content type='text'>
[ Upstream commit 3f01ddb962dc506916c243f9524e8bef97119b77 ]

On receiving a packet the state index points to the rstate which must be
used to fill up IP and TCP headers. But if the state index points to a
rstate which is unitialized, i.e. filled with zeros, it gets stuck in an
infinite loop inside ip_fast_csum trying to compute the ip checsum of a
header with zero length.

89.666953:   &lt;2&gt; [&lt;ffffff9dd3e94d38&gt;] slhc_uncompress+0x464/0x468
89.666965:   &lt;2&gt; [&lt;ffffff9dd3e87d88&gt;] ppp_receive_nonmp_frame+0x3b4/0x65c
89.666978:   &lt;2&gt; [&lt;ffffff9dd3e89dd4&gt;] ppp_receive_frame+0x64/0x7e0
89.666991:   &lt;2&gt; [&lt;ffffff9dd3e8a708&gt;] ppp_input+0x104/0x198
89.667005:   &lt;2&gt; [&lt;ffffff9dd3e93868&gt;] pppopns_recv_core+0x238/0x370
89.667027:   &lt;2&gt; [&lt;ffffff9dd4428fc8&gt;] __sk_receive_skb+0xdc/0x250
89.667040:   &lt;2&gt; [&lt;ffffff9dd3e939e4&gt;] pppopns_recv+0x44/0x60
89.667053:   &lt;2&gt; [&lt;ffffff9dd4426848&gt;] __sock_queue_rcv_skb+0x16c/0x24c
89.667065:   &lt;2&gt; [&lt;ffffff9dd4426954&gt;] sock_queue_rcv_skb+0x2c/0x38
89.667085:   &lt;2&gt; [&lt;ffffff9dd44f7358&gt;] raw_rcv+0x124/0x154
89.667098:   &lt;2&gt; [&lt;ffffff9dd44f7568&gt;] raw_local_deliver+0x1e0/0x22c
89.667117:   &lt;2&gt; [&lt;ffffff9dd44c8ba0&gt;] ip_local_deliver_finish+0x70/0x24c
89.667131:   &lt;2&gt; [&lt;ffffff9dd44c92f4&gt;] ip_local_deliver+0x100/0x10c

./scripts/faddr2line vmlinux slhc_uncompress+0x464/0x468 output:
 ip_fast_csum at arch/arm64/include/asm/checksum.h:40
 (inlined by) slhc_uncompress at drivers/net/slip/slhc.c:615

Adding a variable to indicate if the current rstate is initialized. If
such a packet arrives, move to toss state.

Signed-off-by: Tejaswi Tanikella &lt;tejaswit@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 3f01ddb962dc506916c243f9524e8bef97119b77 ]

On receiving a packet the state index points to the rstate which must be
used to fill up IP and TCP headers. But if the state index points to a
rstate which is unitialized, i.e. filled with zeros, it gets stuck in an
infinite loop inside ip_fast_csum trying to compute the ip checsum of a
header with zero length.

89.666953:   &lt;2&gt; [&lt;ffffff9dd3e94d38&gt;] slhc_uncompress+0x464/0x468
89.666965:   &lt;2&gt; [&lt;ffffff9dd3e87d88&gt;] ppp_receive_nonmp_frame+0x3b4/0x65c
89.666978:   &lt;2&gt; [&lt;ffffff9dd3e89dd4&gt;] ppp_receive_frame+0x64/0x7e0
89.666991:   &lt;2&gt; [&lt;ffffff9dd3e8a708&gt;] ppp_input+0x104/0x198
89.667005:   &lt;2&gt; [&lt;ffffff9dd3e93868&gt;] pppopns_recv_core+0x238/0x370
89.667027:   &lt;2&gt; [&lt;ffffff9dd4428fc8&gt;] __sk_receive_skb+0xdc/0x250
89.667040:   &lt;2&gt; [&lt;ffffff9dd3e939e4&gt;] pppopns_recv+0x44/0x60
89.667053:   &lt;2&gt; [&lt;ffffff9dd4426848&gt;] __sock_queue_rcv_skb+0x16c/0x24c
89.667065:   &lt;2&gt; [&lt;ffffff9dd4426954&gt;] sock_queue_rcv_skb+0x2c/0x38
89.667085:   &lt;2&gt; [&lt;ffffff9dd44f7358&gt;] raw_rcv+0x124/0x154
89.667098:   &lt;2&gt; [&lt;ffffff9dd44f7568&gt;] raw_local_deliver+0x1e0/0x22c
89.667117:   &lt;2&gt; [&lt;ffffff9dd44c8ba0&gt;] ip_local_deliver_finish+0x70/0x24c
89.667131:   &lt;2&gt; [&lt;ffffff9dd44c92f4&gt;] ip_local_deliver+0x100/0x10c

./scripts/faddr2line vmlinux slhc_uncompress+0x464/0x468 output:
 ip_fast_csum at arch/arm64/include/asm/checksum.h:40
 (inlined by) slhc_uncompress at drivers/net/slip/slhc.c:615

Adding a variable to indicate if the current rstate is initialized. If
such a packet arrives, move to toss state.

Signed-off-by: Tejaswi Tanikella &lt;tejaswit@codeaurora.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cdc_ether: flag the Cinterion AHS8 modem by gemalto as WWAN</title>
<updated>2018-04-20T06:21:07+00:00</updated>
<author>
<name>Bassem Boubaker</name>
<email>bassem.boubaker@actia.fr</email>
</author>
<published>2018-04-11T11:15:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6b61154b0680ebd3d82fd9415e9cd2c977bebcf2'/>
<id>6b61154b0680ebd3d82fd9415e9cd2c977bebcf2</id>
<content type='text'>
[ Upstream commit 53765341ee821c0a0f1dec41adc89c9096ad694c ]

The Cinterion AHS8 is a 3G device with one embedded WWAN interface
using cdc_ether as a driver.

The modem is controlled via AT commands through the exposed TTYs.

AT+CGDCONT write command can be used to activate or deactivate a WWAN
connection for a PDP context defined with the same command. UE
supports one WWAN adapter.

Signed-off-by: Bassem Boubaker &lt;bassem.boubaker@actia.fr&gt;
Acked-by: Oliver Neukum &lt;oneukum@suse.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 53765341ee821c0a0f1dec41adc89c9096ad694c ]

The Cinterion AHS8 is a 3G device with one embedded WWAN interface
using cdc_ether as a driver.

The modem is controlled via AT commands through the exposed TTYs.

AT+CGDCONT write command can be used to activate or deactivate a WWAN
connection for a PDP context defined with the same command. UE
supports one WWAN adapter.

Signed-off-by: Bassem Boubaker &lt;bassem.boubaker@actia.fr&gt;
Acked-by: Oliver Neukum &lt;oneukum@suse.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>hwmon: (ina2xx) Fix access to uninitialized mutex</title>
<updated>2018-04-20T06:21:07+00:00</updated>
<author>
<name>Marek Szyprowski</name>
<email>m.szyprowski@samsung.com</email>
</author>
<published>2018-01-15T13:58:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ebdb0d5abc412a5461db8a1a562551d6b643d578'/>
<id>ebdb0d5abc412a5461db8a1a562551d6b643d578</id>
<content type='text'>
commit 0c4c5860e9983eb3da7a3d73ca987643c3ed034b upstream.

Initialize data-&gt;config_lock mutex before it is used by the driver code.

This fixes following warning on Odroid XU3 boards:

INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 5 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc7-next-20180115-00001-gb75575dee3f2 #107
Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[&lt;c0111504&gt;] (unwind_backtrace) from [&lt;c010dbec&gt;] (show_stack+0x10/0x14)
[&lt;c010dbec&gt;] (show_stack) from [&lt;c09b3f74&gt;] (dump_stack+0x90/0xc8)
[&lt;c09b3f74&gt;] (dump_stack) from [&lt;c0179528&gt;] (register_lock_class+0x1c0/0x59c)
[&lt;c0179528&gt;] (register_lock_class) from [&lt;c017bd1c&gt;] (__lock_acquire+0x78/0x1850)
[&lt;c017bd1c&gt;] (__lock_acquire) from [&lt;c017de30&gt;] (lock_acquire+0xc8/0x2b8)
[&lt;c017de30&gt;] (lock_acquire) from [&lt;c09ca59c&gt;] (__mutex_lock+0x60/0xa0c)
[&lt;c09ca59c&gt;] (__mutex_lock) from [&lt;c09cafd0&gt;] (mutex_lock_nested+0x1c/0x24)
[&lt;c09cafd0&gt;] (mutex_lock_nested) from [&lt;c068b0d0&gt;] (ina2xx_set_shunt+0x70/0xb0)
[&lt;c068b0d0&gt;] (ina2xx_set_shunt) from [&lt;c068b218&gt;] (ina2xx_probe+0x88/0x1b0)
[&lt;c068b218&gt;] (ina2xx_probe) from [&lt;c0673d90&gt;] (i2c_device_probe+0x1e0/0x2d0)
[&lt;c0673d90&gt;] (i2c_device_probe) from [&lt;c053a268&gt;] (driver_probe_device+0x2b8/0x4a0)
[&lt;c053a268&gt;] (driver_probe_device) from [&lt;c053a54c&gt;] (__driver_attach+0xfc/0x120)
[&lt;c053a54c&gt;] (__driver_attach) from [&lt;c05384cc&gt;] (bus_for_each_dev+0x58/0x7c)
[&lt;c05384cc&gt;] (bus_for_each_dev) from [&lt;c0539590&gt;] (bus_add_driver+0x174/0x250)
[&lt;c0539590&gt;] (bus_add_driver) from [&lt;c053b5e0&gt;] (driver_register+0x78/0xf4)
[&lt;c053b5e0&gt;] (driver_register) from [&lt;c0675ef0&gt;] (i2c_register_driver+0x38/0xa8)
[&lt;c0675ef0&gt;] (i2c_register_driver) from [&lt;c0102b40&gt;] (do_one_initcall+0x48/0x18c)
[&lt;c0102b40&gt;] (do_one_initcall) from [&lt;c0e00df0&gt;] (kernel_init_freeable+0x110/0x1d4)
[&lt;c0e00df0&gt;] (kernel_init_freeable) from [&lt;c09c8120&gt;] (kernel_init+0x8/0x114)
[&lt;c09c8120&gt;] (kernel_init) from [&lt;c01010b4&gt;] (ret_from_fork+0x14/0x20)

Fixes: 5d389b125186 ("hwmon: (ina2xx) Make calibration register value fixed")
Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
[backport to v4.4.y/v4.9.y: context changes]
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

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

Initialize data-&gt;config_lock mutex before it is used by the driver code.

This fixes following warning on Odroid XU3 boards:

INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
CPU: 5 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc7-next-20180115-00001-gb75575dee3f2 #107
Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
[&lt;c0111504&gt;] (unwind_backtrace) from [&lt;c010dbec&gt;] (show_stack+0x10/0x14)
[&lt;c010dbec&gt;] (show_stack) from [&lt;c09b3f74&gt;] (dump_stack+0x90/0xc8)
[&lt;c09b3f74&gt;] (dump_stack) from [&lt;c0179528&gt;] (register_lock_class+0x1c0/0x59c)
[&lt;c0179528&gt;] (register_lock_class) from [&lt;c017bd1c&gt;] (__lock_acquire+0x78/0x1850)
[&lt;c017bd1c&gt;] (__lock_acquire) from [&lt;c017de30&gt;] (lock_acquire+0xc8/0x2b8)
[&lt;c017de30&gt;] (lock_acquire) from [&lt;c09ca59c&gt;] (__mutex_lock+0x60/0xa0c)
[&lt;c09ca59c&gt;] (__mutex_lock) from [&lt;c09cafd0&gt;] (mutex_lock_nested+0x1c/0x24)
[&lt;c09cafd0&gt;] (mutex_lock_nested) from [&lt;c068b0d0&gt;] (ina2xx_set_shunt+0x70/0xb0)
[&lt;c068b0d0&gt;] (ina2xx_set_shunt) from [&lt;c068b218&gt;] (ina2xx_probe+0x88/0x1b0)
[&lt;c068b218&gt;] (ina2xx_probe) from [&lt;c0673d90&gt;] (i2c_device_probe+0x1e0/0x2d0)
[&lt;c0673d90&gt;] (i2c_device_probe) from [&lt;c053a268&gt;] (driver_probe_device+0x2b8/0x4a0)
[&lt;c053a268&gt;] (driver_probe_device) from [&lt;c053a54c&gt;] (__driver_attach+0xfc/0x120)
[&lt;c053a54c&gt;] (__driver_attach) from [&lt;c05384cc&gt;] (bus_for_each_dev+0x58/0x7c)
[&lt;c05384cc&gt;] (bus_for_each_dev) from [&lt;c0539590&gt;] (bus_add_driver+0x174/0x250)
[&lt;c0539590&gt;] (bus_add_driver) from [&lt;c053b5e0&gt;] (driver_register+0x78/0xf4)
[&lt;c053b5e0&gt;] (driver_register) from [&lt;c0675ef0&gt;] (i2c_register_driver+0x38/0xa8)
[&lt;c0675ef0&gt;] (i2c_register_driver) from [&lt;c0102b40&gt;] (do_one_initcall+0x48/0x18c)
[&lt;c0102b40&gt;] (do_one_initcall) from [&lt;c0e00df0&gt;] (kernel_init_freeable+0x110/0x1d4)
[&lt;c0e00df0&gt;] (kernel_init_freeable) from [&lt;c09c8120&gt;] (kernel_init+0x8/0x114)
[&lt;c09c8120&gt;] (kernel_init) from [&lt;c01010b4&gt;] (ret_from_fork+0x14/0x20)

Fixes: 5d389b125186 ("hwmon: (ina2xx) Make calibration register value fixed")
Signed-off-by: Marek Szyprowski &lt;m.szyprowski@samsung.com&gt;
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
[backport to v4.4.y/v4.9.y: context changes]
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rtl8187: Fix NULL pointer dereference in priv-&gt;conf_mutex</title>
<updated>2018-04-20T06:21:07+00:00</updated>
<author>
<name>Sudhir Sreedharan</name>
<email>ssreedharan@mvista.com</email>
</author>
<published>2018-02-15T07:22:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bcd7de03d68a6953d00453bc1380ee34d2f4e000'/>
<id>bcd7de03d68a6953d00453bc1380ee34d2f4e000</id>
<content type='text'>
commit 7972326a26b5bf8dc2adac575c4e03ee7e9d193a upstream.

This can be reproduced by bind/unbind the driver multiple times
in AM3517 board.

Analysis revealed that rtl8187_start() was invoked before probe
finishes(ie. before the mutex is initialized).

 INFO: trying to register non-static key.
 the code is fine but needs lockdep annotation.
 turning off the locking correctness validator.
 CPU: 0 PID: 821 Comm: wpa_supplicant Not tainted 4.9.80-dirty #250
 Hardware name: Generic AM3517 (Flattened Device Tree)
 [&lt;c010e0d8&gt;] (unwind_backtrace) from [&lt;c010beac&gt;] (show_stack+0x10/0x14)
 [&lt;c010beac&gt;] (show_stack) from [&lt;c017401c&gt;] (register_lock_class+0x4f4/0x55c)
 [&lt;c017401c&gt;] (register_lock_class) from [&lt;c0176fe0&gt;] (__lock_acquire+0x74/0x1938)
 [&lt;c0176fe0&gt;] (__lock_acquire) from [&lt;c0178cfc&gt;] (lock_acquire+0xfc/0x23c)
 [&lt;c0178cfc&gt;] (lock_acquire) from [&lt;c08aa2f8&gt;] (mutex_lock_nested+0x50/0x3b0)
 [&lt;c08aa2f8&gt;] (mutex_lock_nested) from [&lt;c05f5bf8&gt;] (rtl8187_start+0x2c/0xd54)
 [&lt;c05f5bf8&gt;] (rtl8187_start) from [&lt;c082dea0&gt;] (drv_start+0xa8/0x320)
 [&lt;c082dea0&gt;] (drv_start) from [&lt;c084d1d4&gt;] (ieee80211_do_open+0x2bc/0x8e4)
 [&lt;c084d1d4&gt;] (ieee80211_do_open) from [&lt;c069be94&gt;] (__dev_open+0xb8/0x120)
 [&lt;c069be94&gt;] (__dev_open) from [&lt;c069c11c&gt;] (__dev_change_flags+0x88/0x14c)
 [&lt;c069c11c&gt;] (__dev_change_flags) from [&lt;c069c1f8&gt;] (dev_change_flags+0x18/0x48)
 [&lt;c069c1f8&gt;] (dev_change_flags) from [&lt;c0710b08&gt;] (devinet_ioctl+0x738/0x840)
 [&lt;c0710b08&gt;] (devinet_ioctl) from [&lt;c067925c&gt;] (sock_ioctl+0x164/0x2f4)
 [&lt;c067925c&gt;] (sock_ioctl) from [&lt;c02883f8&gt;] (do_vfs_ioctl+0x8c/0x9d0)
 [&lt;c02883f8&gt;] (do_vfs_ioctl) from [&lt;c0288da8&gt;] (SyS_ioctl+0x6c/0x7c)
 [&lt;c0288da8&gt;] (SyS_ioctl) from [&lt;c0107760&gt;] (ret_fast_syscall+0x0/0x1c)
 Unable to handle kernel NULL pointer dereference at virtual address 00000000
 pgd = cd1ec000
 [00000000] *pgd=8d1de831, *pte=00000000, *ppte=00000000
 Internal error: Oops: 817 [#1] PREEMPT ARM
 Modules linked in:
 CPU: 0 PID: 821 Comm: wpa_supplicant Not tainted 4.9.80-dirty #250
 Hardware name: Generic AM3517 (Flattened Device Tree)
 task: ce73eec0 task.stack: cd1ea000
 PC is at mutex_lock_nested+0xe8/0x3b0
 LR is at mutex_lock_nested+0xd0/0x3b0

Cc: stable@vger.kernel.org
Signed-off-by: Sudhir Sreedharan &lt;ssreedharan@mvista.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

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

This can be reproduced by bind/unbind the driver multiple times
in AM3517 board.

Analysis revealed that rtl8187_start() was invoked before probe
finishes(ie. before the mutex is initialized).

 INFO: trying to register non-static key.
 the code is fine but needs lockdep annotation.
 turning off the locking correctness validator.
 CPU: 0 PID: 821 Comm: wpa_supplicant Not tainted 4.9.80-dirty #250
 Hardware name: Generic AM3517 (Flattened Device Tree)
 [&lt;c010e0d8&gt;] (unwind_backtrace) from [&lt;c010beac&gt;] (show_stack+0x10/0x14)
 [&lt;c010beac&gt;] (show_stack) from [&lt;c017401c&gt;] (register_lock_class+0x4f4/0x55c)
 [&lt;c017401c&gt;] (register_lock_class) from [&lt;c0176fe0&gt;] (__lock_acquire+0x74/0x1938)
 [&lt;c0176fe0&gt;] (__lock_acquire) from [&lt;c0178cfc&gt;] (lock_acquire+0xfc/0x23c)
 [&lt;c0178cfc&gt;] (lock_acquire) from [&lt;c08aa2f8&gt;] (mutex_lock_nested+0x50/0x3b0)
 [&lt;c08aa2f8&gt;] (mutex_lock_nested) from [&lt;c05f5bf8&gt;] (rtl8187_start+0x2c/0xd54)
 [&lt;c05f5bf8&gt;] (rtl8187_start) from [&lt;c082dea0&gt;] (drv_start+0xa8/0x320)
 [&lt;c082dea0&gt;] (drv_start) from [&lt;c084d1d4&gt;] (ieee80211_do_open+0x2bc/0x8e4)
 [&lt;c084d1d4&gt;] (ieee80211_do_open) from [&lt;c069be94&gt;] (__dev_open+0xb8/0x120)
 [&lt;c069be94&gt;] (__dev_open) from [&lt;c069c11c&gt;] (__dev_change_flags+0x88/0x14c)
 [&lt;c069c11c&gt;] (__dev_change_flags) from [&lt;c069c1f8&gt;] (dev_change_flags+0x18/0x48)
 [&lt;c069c1f8&gt;] (dev_change_flags) from [&lt;c0710b08&gt;] (devinet_ioctl+0x738/0x840)
 [&lt;c0710b08&gt;] (devinet_ioctl) from [&lt;c067925c&gt;] (sock_ioctl+0x164/0x2f4)
 [&lt;c067925c&gt;] (sock_ioctl) from [&lt;c02883f8&gt;] (do_vfs_ioctl+0x8c/0x9d0)
 [&lt;c02883f8&gt;] (do_vfs_ioctl) from [&lt;c0288da8&gt;] (SyS_ioctl+0x6c/0x7c)
 [&lt;c0288da8&gt;] (SyS_ioctl) from [&lt;c0107760&gt;] (ret_fast_syscall+0x0/0x1c)
 Unable to handle kernel NULL pointer dereference at virtual address 00000000
 pgd = cd1ec000
 [00000000] *pgd=8d1de831, *pte=00000000, *ppte=00000000
 Internal error: Oops: 817 [#1] PREEMPT ARM
 Modules linked in:
 CPU: 0 PID: 821 Comm: wpa_supplicant Not tainted 4.9.80-dirty #250
 Hardware name: Generic AM3517 (Flattened Device Tree)
 task: ce73eec0 task.stack: cd1ea000
 PC is at mutex_lock_nested+0xe8/0x3b0
 LR is at mutex_lock_nested+0xd0/0x3b0

Cc: stable@vger.kernel.org
Signed-off-by: Sudhir Sreedharan &lt;ssreedharan@mvista.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>s390/qdio: don't merge ERROR output buffers</title>
<updated>2018-04-20T06:21:06+00:00</updated>
<author>
<name>Julian Wiedmann</name>
<email>jwi@linux.vnet.ibm.com</email>
</author>
<published>2018-03-07T13:01:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5a768873810afbd22b1c22a9f2d962b3fde10312'/>
<id>5a768873810afbd22b1c22a9f2d962b3fde10312</id>
<content type='text'>
commit 0cf1e05157b9e5530dcc3ca9fec9bf617fc93375 upstream.

On an Output queue, both EMPTY and PENDING buffer states imply that the
buffer is ready for completion-processing by the upper-layer drivers.

So for a non-QEBSM Output queue, get_buf_states() merges mixed
batches of PENDING and EMPTY buffers into one large batch of EMPTY
buffers. The upper-layer driver (ie. qeth) later distuingishes PENDING
from EMPTY by inspecting the slsb_state for
QDIO_OUTBUF_STATE_FLAG_PENDING.

But the merge logic in get_buf_states() contains a bug that causes us to
erronously also merge ERROR buffers into such a batch of EMPTY buffers
(ERROR is 0xaf, EMPTY is 0xa1; so ERROR &amp; EMPTY == EMPTY).
Effectively, most outbound ERROR buffers are currently discarded
silently and processed as if they had succeeded.

Note that this affects _all_ non-QEBSM device types, not just IQD with CQ.

Fix it by explicitly spelling out the exact conditions for merging.

For extracting the "get initial state" part out of the loop, this relies
on the fact that get_buf_states() is never called with a count of 0. The
QEBSM path already strictly requires this, and the two callers with
variable 'count' make sure of it.

Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
Cc: &lt;stable@vger.kernel.org&gt; #v3.2+
Signed-off-by: Julian Wiedmann &lt;jwi@linux.vnet.ibm.com&gt;
Reviewed-by: Ursula Braun &lt;ubraun@linux.vnet.ibm.com&gt;
Reviewed-by: Benjamin Block &lt;bblock@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

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

On an Output queue, both EMPTY and PENDING buffer states imply that the
buffer is ready for completion-processing by the upper-layer drivers.

So for a non-QEBSM Output queue, get_buf_states() merges mixed
batches of PENDING and EMPTY buffers into one large batch of EMPTY
buffers. The upper-layer driver (ie. qeth) later distuingishes PENDING
from EMPTY by inspecting the slsb_state for
QDIO_OUTBUF_STATE_FLAG_PENDING.

But the merge logic in get_buf_states() contains a bug that causes us to
erronously also merge ERROR buffers into such a batch of EMPTY buffers
(ERROR is 0xaf, EMPTY is 0xa1; so ERROR &amp; EMPTY == EMPTY).
Effectively, most outbound ERROR buffers are currently discarded
silently and processed as if they had succeeded.

Note that this affects _all_ non-QEBSM device types, not just IQD with CQ.

Fix it by explicitly spelling out the exact conditions for merging.

For extracting the "get initial state" part out of the loop, this relies
on the fact that get_buf_states() is never called with a count of 0. The
QEBSM path already strictly requires this, and the two callers with
variable 'count' make sure of it.

Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
Cc: &lt;stable@vger.kernel.org&gt; #v3.2+
Signed-off-by: Julian Wiedmann &lt;jwi@linux.vnet.ibm.com&gt;
Reviewed-by: Ursula Braun &lt;ubraun@linux.vnet.ibm.com&gt;
Reviewed-by: Benjamin Block &lt;bblock@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>s390/qdio: don't retry EQBS after CCQ 96</title>
<updated>2018-04-20T06:21:06+00:00</updated>
<author>
<name>Julian Wiedmann</name>
<email>jwi@linux.vnet.ibm.com</email>
</author>
<published>2018-03-05T08:39:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=deda8e039680411eb881fcea17f5a358bc4c4589'/>
<id>deda8e039680411eb881fcea17f5a358bc4c4589</id>
<content type='text'>
commit dae55b6fef58530c13df074bcc182c096609339e upstream.

Immediate retry of EQBS after CCQ 96 means that we potentially misreport
the state of buffers inspected during the first EQBS call.

This occurs when
1. the first EQBS finds all inspected buffers still in the initial state
   set by the driver (ie INPUT EMPTY or OUTPUT PRIMED),
2. the EQBS terminates early with CCQ 96, and
3. by the time that the second EQBS comes around, the state of those
   previously inspected buffers has changed.

If the state reported by the second EQBS is 'driver-owned', all we know
is that the previous buffers are driver-owned now as well. But we can't
tell if they all have the same state. So for instance
- the second EQBS reports OUTPUT EMPTY, but any number of the previous
  buffers could be OUTPUT ERROR by now,
- the second EQBS reports OUTPUT ERROR, but any number of the previous
  buffers could be OUTPUT EMPTY by now.

Effectively, this can result in both over- and underreporting of errors.

If the state reported by the second EQBS is 'HW-owned', that doesn't
guarantee that the previous buffers have not been switched to
driver-owned in the mean time. So for instance
- the second EQBS reports INPUT EMPTY, but any number of the previous
  buffers could be INPUT PRIMED (or INPUT ERROR) by now.

This would result in failure to process pending work on the queue. If
it's the final check before yielding initiative, this can cause
a (temporary) queue stall due to IRQ avoidance.

Fixes: 25f269f17316 ("[S390] qdio: EQBS retry after CCQ 96")
Cc: &lt;stable@vger.kernel.org&gt; #v3.2+
Signed-off-by: Julian Wiedmann &lt;jwi@linux.vnet.ibm.com&gt;
Reviewed-by: Benjamin Block &lt;bblock@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

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

Immediate retry of EQBS after CCQ 96 means that we potentially misreport
the state of buffers inspected during the first EQBS call.

This occurs when
1. the first EQBS finds all inspected buffers still in the initial state
   set by the driver (ie INPUT EMPTY or OUTPUT PRIMED),
2. the EQBS terminates early with CCQ 96, and
3. by the time that the second EQBS comes around, the state of those
   previously inspected buffers has changed.

If the state reported by the second EQBS is 'driver-owned', all we know
is that the previous buffers are driver-owned now as well. But we can't
tell if they all have the same state. So for instance
- the second EQBS reports OUTPUT EMPTY, but any number of the previous
  buffers could be OUTPUT ERROR by now,
- the second EQBS reports OUTPUT ERROR, but any number of the previous
  buffers could be OUTPUT EMPTY by now.

Effectively, this can result in both over- and underreporting of errors.

If the state reported by the second EQBS is 'HW-owned', that doesn't
guarantee that the previous buffers have not been switched to
driver-owned in the mean time. So for instance
- the second EQBS reports INPUT EMPTY, but any number of the previous
  buffers could be INPUT PRIMED (or INPUT ERROR) by now.

This would result in failure to process pending work on the queue. If
it's the final check before yielding initiative, this can cause
a (temporary) queue stall due to IRQ avoidance.

Fixes: 25f269f17316 ("[S390] qdio: EQBS retry after CCQ 96")
Cc: &lt;stable@vger.kernel.org&gt; #v3.2+
Signed-off-by: Julian Wiedmann &lt;jwi@linux.vnet.ibm.com&gt;
Reviewed-by: Benjamin Block &lt;bblock@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>nfit: fix region registration vs block-data-window ranges</title>
<updated>2018-04-20T06:21:06+00:00</updated>
<author>
<name>Dan Williams</name>
<email>dan.j.williams@intel.com</email>
</author>
<published>2018-04-02T23:49:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=768fce44221a2db5a68fdd1bd12dd2aed107cfe0'/>
<id>768fce44221a2db5a68fdd1bd12dd2aed107cfe0</id>
<content type='text'>
commit 8d0d8ed3356aa9ed43b819aaedd39b08ca453007 upstream.

Commit 1cf03c00e7c1 "nfit: scrub and register regions in a workqueue"
mistakenly attempts to register a region per BLK aperture. There is
nothing to register for individual apertures as they belong as a set to
a BLK aperture group that are registered with a corresponding
DIMM-control-region. Filter them for registration to prevent some
needless devm_kzalloc() allocations.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: 1cf03c00e7c1 ("nfit: scrub and register regions in a workqueue")
Reviewed-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

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

Commit 1cf03c00e7c1 "nfit: scrub and register regions in a workqueue"
mistakenly attempts to register a region per BLK aperture. There is
nothing to register for individual apertures as they belong as a set to
a BLK aperture group that are registered with a corresponding
DIMM-control-region. Filter them for registration to prevent some
needless devm_kzalloc() allocations.

Cc: &lt;stable@vger.kernel.org&gt;
Fixes: 1cf03c00e7c1 ("nfit: scrub and register regions in a workqueue")
Reviewed-by: Dave Jiang &lt;dave.jiang@intel.com&gt;
Signed-off-by: Dan Williams &lt;dan.j.williams@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
