<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/gpio, branch v4.15.4</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>gpio: uniphier: fix mismatch between license text and MODULE_LICENSE</title>
<updated>2018-02-12T06:07:22+00:00</updated>
<author>
<name>Masahiro Yamada</name>
<email>yamada.masahiro@socionext.com</email>
</author>
<published>2017-11-23T10:01:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=65a4a2157f0be4d4a30689ae6757ff67486b03ec'/>
<id>65a4a2157f0be4d4a30689ae6757ff67486b03ec</id>
<content type='text'>
commit 13f9d59cef91a027bb338fc79b564fafa7680cd8 upstream.

The comment block of this file indicates GPL-2.0 "only", while the
MODULE_LICENSE is GPL-2.0 "or later", as include/linux/module.h
describes as follows:

  "GPL"                           [GNU Public License v2 or later]
  "GPL v2"                        [GNU Public License v2]

I am the author of this driver, and my intention is GPL-2.0 "only".

Fixes: dbe776c2ca54 ("gpio: uniphier: add UniPhier GPIO controller driver")
Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@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>
commit 13f9d59cef91a027bb338fc79b564fafa7680cd8 upstream.

The comment block of this file indicates GPL-2.0 "only", while the
MODULE_LICENSE is GPL-2.0 "or later", as include/linux/module.h
describes as follows:

  "GPL"                           [GNU Public License v2 or later]
  "GPL v2"                        [GNU Public License v2]

I am the author of this driver, and my intention is GPL-2.0 "only".

Fixes: dbe776c2ca54 ("gpio: uniphier: add UniPhier GPIO controller driver")
Signed-off-by: Masahiro Yamada &lt;yamada.masahiro@socionext.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE</title>
<updated>2018-02-03T16:58:35+00:00</updated>
<author>
<name>Jesse Chan</name>
<email>jc@linux.com</email>
</author>
<published>2017-11-20T20:54:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2db691195247e906503bfa14df17bff43f0eb5e0'/>
<id>2db691195247e906503bfa14df17bff43f0eb5e0</id>
<content type='text'>
commit 539340f37e6d6ed4cd93e8e18c9b2e4eafd4b842 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-ath79.o
see include/linux/module.h for more information

This adds the license as "GPL v2", which matches the header of the file.

MODULE_DESCRIPTION is also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Acked-by: Alban Bedel &lt;albeu@free.fr&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@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>
commit 539340f37e6d6ed4cd93e8e18c9b2e4eafd4b842 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-ath79.o
see include/linux/module.h for more information

This adds the license as "GPL v2", which matches the header of the file.

MODULE_DESCRIPTION is also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Acked-by: Alban Bedel &lt;albeu@free.fr&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE</title>
<updated>2018-02-03T16:58:34+00:00</updated>
<author>
<name>Jesse Chan</name>
<email>jc@linux.com</email>
</author>
<published>2017-11-20T20:54:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=397b9b19bfbd9471dfa5b8be9952cd0f218dee9f'/>
<id>397b9b19bfbd9471dfa5b8be9952cd0f218dee9f</id>
<content type='text'>
commit 97b03136e1b637d7a9d2274c099e44ecf23f1103 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-iop.o
see include/linux/module.h for more information

This adds the license as "GPL", which matches the header of the file.

MODULE_DESCRIPTION and MODULE_AUTHOR are also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@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>
commit 97b03136e1b637d7a9d2274c099e44ecf23f1103 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-iop.o
see include/linux/module.h for more information

This adds the license as "GPL", which matches the header of the file.

MODULE_DESCRIPTION and MODULE_AUTHOR are also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: Fix kernel stack leak to userspace</title>
<updated>2018-02-03T16:58:30+00:00</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2018-01-22T12:19:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5e5a8be023706da797db5cd7c05b7918275f3435'/>
<id>5e5a8be023706da797db5cd7c05b7918275f3435</id>
<content type='text'>
commit 24bd3efc9d1efb5f756a7c6f807a36ddb6adc671 upstream.

The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Reported-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@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>
commit 24bd3efc9d1efb5f756a7c6f807a36ddb6adc671 upstream.

The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Reported-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: stmpe: i2c transfer are forbiden in atomic context</title>
<updated>2018-02-03T16:58:30+00:00</updated>
<author>
<name>Patrice Chotard</name>
<email>patrice.chotard@st.com</email>
</author>
<published>2018-01-12T12:16:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b98fe1634c13270d989dbe01e3768ea952b8494c'/>
<id>b98fe1634c13270d989dbe01e3768ea952b8494c</id>
<content type='text'>
commit b888fb6f2a278442933e3bfab70262e9a5365fb3 upstream.

Move the workaround from stmpe_gpio_irq_unmask() which is executed
in atomic context to stmpe_gpio_irq_sync_unlock() which is not.

It fixes the following issue:

[    1.500000] BUG: scheduling while atomic: swapper/1/0x00000002
[    1.500000] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc2-00020-gbd4301f-dirty #28
[    1.520000] Hardware name: STM32 (Device Tree Support)
[    1.520000] [&lt;0000bfc9&gt;] (unwind_backtrace) from [&lt;0000b347&gt;] (show_stack+0xb/0xc)
[    1.530000] [&lt;0000b347&gt;] (show_stack) from [&lt;0001fc49&gt;] (__schedule_bug+0x39/0x58)
[    1.530000] [&lt;0001fc49&gt;] (__schedule_bug) from [&lt;00168211&gt;] (__schedule+0x23/0x2b2)
[    1.550000] [&lt;00168211&gt;] (__schedule) from [&lt;001684f7&gt;] (schedule+0x57/0x64)
[    1.550000] [&lt;001684f7&gt;] (schedule) from [&lt;0016a513&gt;] (schedule_timeout+0x137/0x164)
[    1.550000] [&lt;0016a513&gt;] (schedule_timeout) from [&lt;00168b91&gt;] (wait_for_common+0x8d/0xfc)
[    1.570000] [&lt;00168b91&gt;] (wait_for_common) from [&lt;00139753&gt;] (stm32f4_i2c_xfer+0xe9/0xfe)
[    1.580000] [&lt;00139753&gt;] (stm32f4_i2c_xfer) from [&lt;00138545&gt;] (__i2c_transfer+0x111/0x148)
[    1.590000] [&lt;00138545&gt;] (__i2c_transfer) from [&lt;001385cf&gt;] (i2c_transfer+0x53/0x70)
[    1.590000] [&lt;001385cf&gt;] (i2c_transfer) from [&lt;001388a5&gt;] (i2c_smbus_xfer+0x12f/0x36e)
[    1.600000] [&lt;001388a5&gt;] (i2c_smbus_xfer) from [&lt;00138b49&gt;] (i2c_smbus_read_byte_data+0x1f/0x2a)
[    1.610000] [&lt;00138b49&gt;] (i2c_smbus_read_byte_data) from [&lt;00124fdd&gt;] (__stmpe_reg_read+0xd/0x24)
[    1.620000] [&lt;00124fdd&gt;] (__stmpe_reg_read) from [&lt;001252b3&gt;] (stmpe_reg_read+0x19/0x24)
[    1.630000] [&lt;001252b3&gt;] (stmpe_reg_read) from [&lt;0002c4d1&gt;] (unmask_irq+0x17/0x22)
[    1.640000] [&lt;0002c4d1&gt;] (unmask_irq) from [&lt;0002c57f&gt;] (irq_startup+0x6f/0x78)
[    1.650000] [&lt;0002c57f&gt;] (irq_startup) from [&lt;0002b7a1&gt;] (__setup_irq+0x319/0x47c)
[    1.650000] [&lt;0002b7a1&gt;] (__setup_irq) from [&lt;0002bad3&gt;] (request_threaded_irq+0x6b/0xe8)
[    1.660000] [&lt;0002bad3&gt;] (request_threaded_irq) from [&lt;0002d0b9&gt;] (devm_request_threaded_irq+0x3b/0x6a)
[    1.670000] [&lt;0002d0b9&gt;] (devm_request_threaded_irq) from [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq+0x49/0x8a)
[    1.680000] [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq) from [&lt;0013d45d&gt;] (mmc_start_host+0x49/0x60)
[    1.690000] [&lt;0013d45d&gt;] (mmc_start_host) from [&lt;0013e40b&gt;] (mmc_add_host+0x3b/0x54)
[    1.700000] [&lt;0013e40b&gt;] (mmc_add_host) from [&lt;00148119&gt;] (mmci_probe+0x4d1/0x60c)
[    1.710000] [&lt;00148119&gt;] (mmci_probe) from [&lt;000f903b&gt;] (amba_probe+0x7b/0xbe)
[    1.720000] [&lt;000f903b&gt;] (amba_probe) from [&lt;001170e5&gt;] (driver_probe_device+0x169/0x1f8)
[    1.730000] [&lt;001170e5&gt;] (driver_probe_device) from [&lt;001171b7&gt;] (__driver_attach+0x43/0x5c)
[    1.740000] [&lt;001171b7&gt;] (__driver_attach) from [&lt;0011618d&gt;] (bus_for_each_dev+0x3d/0x46)
[    1.740000] [&lt;0011618d&gt;] (bus_for_each_dev) from [&lt;001165cd&gt;] (bus_add_driver+0xcd/0x124)
[    1.740000] [&lt;001165cd&gt;] (bus_add_driver) from [&lt;00117713&gt;] (driver_register+0x4d/0x7a)
[    1.760000] [&lt;00117713&gt;] (driver_register) from [&lt;001fc765&gt;] (do_one_initcall+0xbd/0xe8)
[    1.770000] [&lt;001fc765&gt;] (do_one_initcall) from [&lt;001fc88b&gt;] (kernel_init_freeable+0xfb/0x134)
[    1.780000] [&lt;001fc88b&gt;] (kernel_init_freeable) from [&lt;00167ee3&gt;] (kernel_init+0x7/0x9c)
[    1.790000] [&lt;00167ee3&gt;] (kernel_init) from [&lt;00009b65&gt;] (ret_from_fork+0x11/0x2c)

Signed-off-by: Alexandre TORGUE &lt;alexandre.torgue@st.com&gt;
Signed-off-by: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@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>
commit b888fb6f2a278442933e3bfab70262e9a5365fb3 upstream.

Move the workaround from stmpe_gpio_irq_unmask() which is executed
in atomic context to stmpe_gpio_irq_sync_unlock() which is not.

It fixes the following issue:

[    1.500000] BUG: scheduling while atomic: swapper/1/0x00000002
[    1.500000] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc2-00020-gbd4301f-dirty #28
[    1.520000] Hardware name: STM32 (Device Tree Support)
[    1.520000] [&lt;0000bfc9&gt;] (unwind_backtrace) from [&lt;0000b347&gt;] (show_stack+0xb/0xc)
[    1.530000] [&lt;0000b347&gt;] (show_stack) from [&lt;0001fc49&gt;] (__schedule_bug+0x39/0x58)
[    1.530000] [&lt;0001fc49&gt;] (__schedule_bug) from [&lt;00168211&gt;] (__schedule+0x23/0x2b2)
[    1.550000] [&lt;00168211&gt;] (__schedule) from [&lt;001684f7&gt;] (schedule+0x57/0x64)
[    1.550000] [&lt;001684f7&gt;] (schedule) from [&lt;0016a513&gt;] (schedule_timeout+0x137/0x164)
[    1.550000] [&lt;0016a513&gt;] (schedule_timeout) from [&lt;00168b91&gt;] (wait_for_common+0x8d/0xfc)
[    1.570000] [&lt;00168b91&gt;] (wait_for_common) from [&lt;00139753&gt;] (stm32f4_i2c_xfer+0xe9/0xfe)
[    1.580000] [&lt;00139753&gt;] (stm32f4_i2c_xfer) from [&lt;00138545&gt;] (__i2c_transfer+0x111/0x148)
[    1.590000] [&lt;00138545&gt;] (__i2c_transfer) from [&lt;001385cf&gt;] (i2c_transfer+0x53/0x70)
[    1.590000] [&lt;001385cf&gt;] (i2c_transfer) from [&lt;001388a5&gt;] (i2c_smbus_xfer+0x12f/0x36e)
[    1.600000] [&lt;001388a5&gt;] (i2c_smbus_xfer) from [&lt;00138b49&gt;] (i2c_smbus_read_byte_data+0x1f/0x2a)
[    1.610000] [&lt;00138b49&gt;] (i2c_smbus_read_byte_data) from [&lt;00124fdd&gt;] (__stmpe_reg_read+0xd/0x24)
[    1.620000] [&lt;00124fdd&gt;] (__stmpe_reg_read) from [&lt;001252b3&gt;] (stmpe_reg_read+0x19/0x24)
[    1.630000] [&lt;001252b3&gt;] (stmpe_reg_read) from [&lt;0002c4d1&gt;] (unmask_irq+0x17/0x22)
[    1.640000] [&lt;0002c4d1&gt;] (unmask_irq) from [&lt;0002c57f&gt;] (irq_startup+0x6f/0x78)
[    1.650000] [&lt;0002c57f&gt;] (irq_startup) from [&lt;0002b7a1&gt;] (__setup_irq+0x319/0x47c)
[    1.650000] [&lt;0002b7a1&gt;] (__setup_irq) from [&lt;0002bad3&gt;] (request_threaded_irq+0x6b/0xe8)
[    1.660000] [&lt;0002bad3&gt;] (request_threaded_irq) from [&lt;0002d0b9&gt;] (devm_request_threaded_irq+0x3b/0x6a)
[    1.670000] [&lt;0002d0b9&gt;] (devm_request_threaded_irq) from [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq+0x49/0x8a)
[    1.680000] [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq) from [&lt;0013d45d&gt;] (mmc_start_host+0x49/0x60)
[    1.690000] [&lt;0013d45d&gt;] (mmc_start_host) from [&lt;0013e40b&gt;] (mmc_add_host+0x3b/0x54)
[    1.700000] [&lt;0013e40b&gt;] (mmc_add_host) from [&lt;00148119&gt;] (mmci_probe+0x4d1/0x60c)
[    1.710000] [&lt;00148119&gt;] (mmci_probe) from [&lt;000f903b&gt;] (amba_probe+0x7b/0xbe)
[    1.720000] [&lt;000f903b&gt;] (amba_probe) from [&lt;001170e5&gt;] (driver_probe_device+0x169/0x1f8)
[    1.730000] [&lt;001170e5&gt;] (driver_probe_device) from [&lt;001171b7&gt;] (__driver_attach+0x43/0x5c)
[    1.740000] [&lt;001171b7&gt;] (__driver_attach) from [&lt;0011618d&gt;] (bus_for_each_dev+0x3d/0x46)
[    1.740000] [&lt;0011618d&gt;] (bus_for_each_dev) from [&lt;001165cd&gt;] (bus_add_driver+0xcd/0x124)
[    1.740000] [&lt;001165cd&gt;] (bus_add_driver) from [&lt;00117713&gt;] (driver_register+0x4d/0x7a)
[    1.760000] [&lt;00117713&gt;] (driver_register) from [&lt;001fc765&gt;] (do_one_initcall+0xbd/0xe8)
[    1.770000] [&lt;001fc765&gt;] (do_one_initcall) from [&lt;001fc88b&gt;] (kernel_init_freeable+0xfb/0x134)
[    1.780000] [&lt;001fc88b&gt;] (kernel_init_freeable) from [&lt;00167ee3&gt;] (kernel_init+0x7/0x9c)
[    1.790000] [&lt;00167ee3&gt;] (kernel_init) from [&lt;00009b65&gt;] (ret_from_fork+0x11/0x2c)

Signed-off-by: Alexandre TORGUE &lt;alexandre.torgue@st.com&gt;
Signed-off-by: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: mmio: Also read bits that are zero</title>
<updated>2018-01-16T22:42:36+00:00</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2018-01-16T08:51:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=07c7b6a52503ac13ae357a8b3ef3456590a64b65'/>
<id>07c7b6a52503ac13ae357a8b3ef3456590a64b65</id>
<content type='text'>
The code for .get_multiple() has bugs:

1. The simple .get_multiple() just reads a register, masks it
and sets the return value. This is not correct: we only want to
assign values (whether 0 or 1) to the bits that are set in the
mask. Fix this by using &amp;= ~mask to clear all bits in the mask
and then |= val &amp; mask to set the corresponding bits from the
read.

2. The bgpio_get_multiple_be() call has a similar problem: it
uses the |= operator to set the bits, so only the bits in the
mask are affected, but it misses to clear all returned bits
from the mask initially, so some bits will be returned
erroneously set to 1.

3. The bgpio_get_set_multiple() again fails to clear the bits
from the mask.

4. find_next_bit() wasn't handled correctly, use a totally
different approach for one function and change the other
function to follow the design pattern of assigning the first
bit to -1, then use bit + 1 in the for loop and &lt; num_iterations
as break condition.

Fixes: 80057cb417b2 ("gpio-mmio: Use the new .get_multiple() callback")
Cc: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Reported-by: Clemens Gruber &lt;clemens.gruber@pqgruber.com&gt;
Tested-by: Clemens Gruber &lt;clemens.gruber@pqgruber.com&gt;
Reported-by: Lukas Wunner &lt;lukas@wunner.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The code for .get_multiple() has bugs:

1. The simple .get_multiple() just reads a register, masks it
and sets the return value. This is not correct: we only want to
assign values (whether 0 or 1) to the bits that are set in the
mask. Fix this by using &amp;= ~mask to clear all bits in the mask
and then |= val &amp; mask to set the corresponding bits from the
read.

2. The bgpio_get_multiple_be() call has a similar problem: it
uses the |= operator to set the bits, so only the bits in the
mask are affected, but it misses to clear all returned bits
from the mask initially, so some bits will be returned
erroneously set to 1.

3. The bgpio_get_set_multiple() again fails to clear the bits
from the mask.

4. find_next_bit() wasn't handled correctly, use a totally
different approach for one function and change the other
function to follow the design pattern of assigning the first
bit to -1, then use bit + 1 in the for loop and &lt; num_iterations
as break condition.

Fixes: 80057cb417b2 ("gpio-mmio: Use the new .get_multiple() callback")
Cc: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Reported-by: Clemens Gruber &lt;clemens.gruber@pqgruber.com&gt;
Tested-by: Clemens Gruber &lt;clemens.gruber@pqgruber.com&gt;
Reported-by: Lukas Wunner &lt;lukas@wunner.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: Add missing open drain/source handling to gpiod_set_value_cansleep()</title>
<updated>2018-01-10T13:17:17+00:00</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert+renesas@glider.be</email>
</author>
<published>2018-01-09T18:08:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1e77fc82110ac36febf46c1e2782f504f7d23099'/>
<id>1e77fc82110ac36febf46c1e2782f504f7d23099</id>
<content type='text'>
Since commit f11a04464ae57e8d ("i2c: gpio: Enable working over slow
can_sleep GPIOs"), probing the i2c RTC connected to an i2c-gpio bus on
r8a7740/armadillo fails with:

    rtc-s35390a 0-0030: error resetting chip
    rtc-s35390a: probe of 0-0030 failed with error -5

More debug code reveals:

    i2c i2c-0: master_xfer[0] R, addr=0x30, len=1
    i2c i2c-0: NAK from device addr 0x30 msg #0
    s35390a_get_reg: ret = -6

Commit 02e479808b5d62f8 ("gpio: Alter semantics of *raw* operations to
actually be raw") moved open drain/source handling from
gpiod_set_raw_value_commit() to gpiod_set_value(), but forgot to take
into account that gpiod_set_value_cansleep() also needs this handling.
The i2c protocol mandates that i2c signals are open drain, hence i2c
communication fails.

Fix this by adding the missing handling to gpiod_set_value_cansleep(),
using a new common helper gpiod_set_value_nocheck().

Fixes: 02e479808b5d62f8 ("gpio: Alter semantics of *raw* operations to actually be raw")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
[removed underscore syntax, added kerneldoc]
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since commit f11a04464ae57e8d ("i2c: gpio: Enable working over slow
can_sleep GPIOs"), probing the i2c RTC connected to an i2c-gpio bus on
r8a7740/armadillo fails with:

    rtc-s35390a 0-0030: error resetting chip
    rtc-s35390a: probe of 0-0030 failed with error -5

More debug code reveals:

    i2c i2c-0: master_xfer[0] R, addr=0x30, len=1
    i2c i2c-0: NAK from device addr 0x30 msg #0
    s35390a_get_reg: ret = -6

Commit 02e479808b5d62f8 ("gpio: Alter semantics of *raw* operations to
actually be raw") moved open drain/source handling from
gpiod_set_raw_value_commit() to gpiod_set_value(), but forgot to take
into account that gpiod_set_value_cansleep() also needs this handling.
The i2c protocol mandates that i2c signals are open drain, hence i2c
communication fails.

Fix this by adding the missing handling to gpiod_set_value_cansleep(),
using a new common helper gpiod_set_value_nocheck().

Fixes: 02e479808b5d62f8 ("gpio: Alter semantics of *raw* operations to actually be raw")
Signed-off-by: Geert Uytterhoeven &lt;geert+renesas@glider.be&gt;
[removed underscore syntax, added kerneldoc]
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>genirq/irqdomain: Rename early argument of irq_domain_activate_irq()</title>
<updated>2017-12-29T20:13:04+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2017-12-29T15:59:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=702cb0a02813299d6911b775c637906ae21b737d'/>
<id>702cb0a02813299d6911b775c637906ae21b737d</id>
<content type='text'>
The 'early' argument of irq_domain_activate_irq() is actually used to
denote reservation mode. To avoid confusion, rename it before abuse
happens.

No functional change.

Fixes: 72491643469a ("genirq/irqdomain: Update irq_domain_ops.activate() signature")
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Alexandru Chirvasitu &lt;achirvasub@gmail.com&gt;
Cc: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Cc: Dou Liyang &lt;douly.fnst@cn.fujitsu.com&gt;
Cc: Pavel Machek &lt;pavel@ucw.cz&gt;
Cc: Maciej W. Rozycki &lt;macro@linux-mips.org&gt;
Cc: Mikael Pettersson &lt;mikpelinux@gmail.com&gt;
Cc: Josh Poulson &lt;jopoulso@microsoft.com&gt;
Cc: Mihai Costache &lt;v-micos@microsoft.com&gt;
Cc: Stephen Hemminger &lt;sthemmin@microsoft.com&gt;
Cc: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Cc: linux-pci@vger.kernel.org
Cc: Haiyang Zhang &lt;haiyangz@microsoft.com&gt;
Cc: Dexuan Cui &lt;decui@microsoft.com&gt;
Cc: Simon Xiao &lt;sixiao@microsoft.com&gt;
Cc: Saeed Mahameed &lt;saeedm@mellanox.com&gt;
Cc: Jork Loeser &lt;Jork.Loeser@microsoft.com&gt;
Cc: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Cc: devel@linuxdriverproject.org
Cc: KY Srinivasan &lt;kys@microsoft.com&gt;
Cc: Alan Cox &lt;alan@linux.intel.com&gt;
Cc: Sakari Ailus &lt;sakari.ailus@intel.com&gt;,
Cc: linux-media@vger.kernel.org

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The 'early' argument of irq_domain_activate_irq() is actually used to
denote reservation mode. To avoid confusion, rename it before abuse
happens.

No functional change.

Fixes: 72491643469a ("genirq/irqdomain: Update irq_domain_ops.activate() signature")
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Alexandru Chirvasitu &lt;achirvasub@gmail.com&gt;
Cc: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Cc: Dou Liyang &lt;douly.fnst@cn.fujitsu.com&gt;
Cc: Pavel Machek &lt;pavel@ucw.cz&gt;
Cc: Maciej W. Rozycki &lt;macro@linux-mips.org&gt;
Cc: Mikael Pettersson &lt;mikpelinux@gmail.com&gt;
Cc: Josh Poulson &lt;jopoulso@microsoft.com&gt;
Cc: Mihai Costache &lt;v-micos@microsoft.com&gt;
Cc: Stephen Hemminger &lt;sthemmin@microsoft.com&gt;
Cc: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Cc: linux-pci@vger.kernel.org
Cc: Haiyang Zhang &lt;haiyangz@microsoft.com&gt;
Cc: Dexuan Cui &lt;decui@microsoft.com&gt;
Cc: Simon Xiao &lt;sixiao@microsoft.com&gt;
Cc: Saeed Mahameed &lt;saeedm@mellanox.com&gt;
Cc: Jork Loeser &lt;Jork.Loeser@microsoft.com&gt;
Cc: Bjorn Helgaas &lt;bhelgaas@google.com&gt;
Cc: devel@linuxdriverproject.org
Cc: KY Srinivasan &lt;kys@microsoft.com&gt;
Cc: Alan Cox &lt;alan@linux.intel.com&gt;
Cc: Sakari Ailus &lt;sakari.ailus@intel.com&gt;,
Cc: linux-media@vger.kernel.org

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: brcmstb: Make really use of the new lockdep class</title>
<updated>2017-12-29T15:37:09+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2017-12-29T15:29:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8880c13734af33635118a1e9567dadc7f9ddb7a8'/>
<id>8880c13734af33635118a1e9567dadc7f9ddb7a8</id>
<content type='text'>
The recent extension of irq_set_lockdep_class() with a second argument
added the new lockdep class to the mrcmstb driver, but used the already
existing lockdep class as second argument, which leaves the new lockdep
class defined but unused.

Use the new lockdep class as that's what the change intended to do.

Fixes: 39c3fd58952d ("kernel/irq: Extend lockdep class for request mutex")
Reported-by: Ingo Molnar &lt;mingo@kernel.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Andrew Lunn &lt;andrew@lunn.ch&gt;
Cc: linus.walleij@linaro.org
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The recent extension of irq_set_lockdep_class() with a second argument
added the new lockdep class to the mrcmstb driver, but used the already
existing lockdep class as second argument, which leaves the new lockdep
class defined but unused.

Use the new lockdep class as that's what the change intended to do.

Fixes: 39c3fd58952d ("kernel/irq: Extend lockdep class for request mutex")
Reported-by: Ingo Molnar &lt;mingo@kernel.org&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Andrew Lunn &lt;andrew@lunn.ch&gt;
Cc: linus.walleij@linaro.org
</pre>
</div>
</content>
</entry>
<entry>
<title>kernel/irq: Extend lockdep class for request mutex</title>
<updated>2017-12-28T11:26:35+00:00</updated>
<author>
<name>Andrew Lunn</name>
<email>andrew@lunn.ch</email>
</author>
<published>2017-12-02T17:11:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=39c3fd58952d7599d367c84c1330b785d91d6088'/>
<id>39c3fd58952d7599d367c84c1330b785d91d6088</id>
<content type='text'>
The IRQ code already has support for lockdep class for the lock mutex
in an interrupt descriptor. Extend this to add a second class for the
request mutex in the descriptor. Not having a class is resulting in
false positive splats in some code paths.

Signed-off-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: linus.walleij@linaro.org
Cc: grygorii.strashko@ti.com
Cc: f.fainelli@gmail.com
Link: https://lkml.kernel.org/r/1512234664-21555-1-git-send-email-andrew@lunn.ch

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The IRQ code already has support for lockdep class for the lock mutex
in an interrupt descriptor. Extend this to add a second class for the
request mutex in the descriptor. Not having a class is resulting in
false positive splats in some code paths.

Signed-off-by: Andrew Lunn &lt;andrew@lunn.ch&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: linus.walleij@linaro.org
Cc: grygorii.strashko@ti.com
Cc: f.fainelli@gmail.com
Link: https://lkml.kernel.org/r/1512234664-21555-1-git-send-email-andrew@lunn.ch

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