<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/input/misc, branch v3.16.81</title>
<subtitle>Clone of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git</subtitle>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/'/>
<entry>
<title>Input: uinput - add compat ioctl number translation for UI_*_FF_UPLOAD</title>
<updated>2019-10-05T15:19:45+00:00</updated>
<author>
<name>Andrey Smirnov</name>
<email>andrew.smirnov@gmail.com</email>
</author>
<published>2019-05-23T19:55:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=ddbddae7155ad5921a69ef5d1ebd8328cd9f8b16'/>
<id>ddbddae7155ad5921a69ef5d1ebd8328cd9f8b16</id>
<content type='text'>
commit 7c7da40da1640ce6814dab1e8031b44e19e5a3f6 upstream.

In the case of compat syscall ioctl numbers for UI_BEGIN_FF_UPLOAD and
UI_END_FF_UPLOAD need to be adjusted before being passed on
uinput_ioctl_handler() since code built with -m32 will be passing
slightly different values. Extend the code already covering
UI_SET_PHYS to cover UI_BEGIN_FF_UPLOAD and UI_END_FF_UPLOAD as well.

Reported-by: Pierre-Loup A. Griffais &lt;pgriffais@valvesoftware.com&gt;
Signed-off-by: Andrey Smirnov &lt;andrew.smirnov@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 7c7da40da1640ce6814dab1e8031b44e19e5a3f6 upstream.

In the case of compat syscall ioctl numbers for UI_BEGIN_FF_UPLOAD and
UI_END_FF_UPLOAD need to be adjusted before being passed on
uinput_ioctl_handler() since code built with -m32 will be passing
slightly different values. Extend the code already covering
UI_SET_PHYS to cover UI_BEGIN_FF_UPLOAD and UI_END_FF_UPLOAD as well.

Reported-by: Pierre-Loup A. Griffais &lt;pgriffais@valvesoftware.com&gt;
Signed-off-by: Andrey Smirnov &lt;andrew.smirnov@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: bma150 - register input device after setting private data</title>
<updated>2019-05-02T20:41:40+00:00</updated>
<author>
<name>Jonathan Bakker</name>
<email>xc-racer2@live.ca</email>
</author>
<published>2019-02-06T18:45:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=ff62b559b40786f5e47732deeafa6f8742da586d'/>
<id>ff62b559b40786f5e47732deeafa6f8742da586d</id>
<content type='text'>
commit 90cc55f067f6ca0e64e5e52883ece47d8af7b67b upstream.

Otherwise we introduce a race condition where userspace can request input
before we're ready leading to null pointer dereference such as

input: bma150 as /devices/platform/i2c-gpio-2/i2c-5/5-0038/input/input3
Unable to handle kernel NULL pointer dereference at virtual address 00000018
pgd = (ptrval)
[00000018] *pgd=55dac831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT ARM
Modules linked in: bma150 input_polldev [last unloaded: bma150]
CPU: 0 PID: 2870 Comm: accelerometer Not tainted 5.0.0-rc3-dirty #46
Hardware name: Samsung S5PC110/S5PV210-based board
PC is at input_event+0x8/0x60
LR is at bma150_report_xyz+0x9c/0xe0 [bma150]
pc : [&lt;80450f70&gt;]    lr : [&lt;7f0a614c&gt;]    psr: 800d0013
sp : a4c1fd78  ip : 00000081  fp : 00020000
r10: 00000000  r9 : a5e2944c  r8 : a7455000
r7 : 00000016  r6 : 00000101  r5 : a7617940  r4 : 80909048
r3 : fffffff2  r2 : 00000000  r1 : 00000003  r0 : 00000000
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c5387d  Table: 54e34019  DAC: 00000051
Process accelerometer (pid: 2870, stack limit = 0x(ptrval))
Stackck: (0xa4c1fd78 to 0xa4c20000)
fd60:                                                       fffffff3 fc813f6c
fd80: 40410581 d7530ce3 a5e2817c a7617f00 a5e29404 a5e2817c 00000000 7f008324
fda0: a5e28000 8044f59c a5fdd9d0 a5e2945c a46a4a00 a5e29668 a7455000 80454f10
fdc0: 80909048 a5e29668 a5fdd9d0 a46a4a00 806316d0 00000000 a46a4a00 801df5f0
fde0: 00000000 d7530ce3 a4c1fec0 a46a4a00 00000000 a5fdd9d0 a46a4a08 801df53c
fe00: 00000000 801d74bc a4c1fec0 00000000 a4c1ff70 00000000 a7038da8 00000000
fe20: a46a4a00 801e91fc a411bbe0 801f2e88 00000004 00000000 80909048 00000041
fe40: 00000000 00020000 00000000 dead4ead a6a88da0 00000000 ffffe000 806fcae8
fe60: a4c1fec8 00000000 80909048 00000002 a5fdd9d0 a7660110 a411bab0 00000001
fe80: dead4ead ffffffff ffffffff a4c1fe8c a4c1fe8c d7530ce3 20000013 80909048
fea0: 80909048 a4c1ff70 00000001 fffff000 a4c1e000 00000005 00026038 801eabd8
fec0: a7660110 a411bab0 b9394901 00000006 a696201b 76fb3000 00000000 a7039720
fee0: a5fdd9d0 00000101 00000002 00000096 00000000 00000000 00000000 a4c1ff00
ff00: a6b310f4 805cb174 a6b310f4 00000010 00000fe0 00000010 a4c1e000 d7530ce3
ff20: 00000003 a5f41400 a5f41424 00000000 a6962000 00000000 00000003 00000002
ff40: ffffff9c 000a0000 80909048 d7530ce3 a6962000 00000003 80909048 ffffff9c
ff60: a6962000 801d890c 00000000 00000000 00020000 a7590000 00000004 00000100
ff80: 00000001 d7530ce3 000288b8 00026320 000288b8 00000005 80101204 a4c1e000
ffa0: 00000005 80101000 000288b8 00026320 000288b8 000a0000 00000000 00000000
ffc0: 000288b8 00026320 000288b8 00000005 7eef3bac 000264e8 00028ad8 00026038
ffe0: 00000005 7eef3300 76f76e91 76f78546 800d0030 000288b8 00000000 00000000
[&lt;80450f70&gt;] (input_event) from [&lt;a5e2817c&gt;] (0xa5e2817c)
Code: e1a08148 eaffffa8 e351001f 812fff1e (e590c018)
---[ end trace 1c691ee85f2ff243 ]---

Signed-off-by: Jonathan Bakker &lt;xc-racer2@live.ca&gt;
Signed-off-by: Paweł Chmiel &lt;pawel.mikolaj.chmiel@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 90cc55f067f6ca0e64e5e52883ece47d8af7b67b upstream.

Otherwise we introduce a race condition where userspace can request input
before we're ready leading to null pointer dereference such as

input: bma150 as /devices/platform/i2c-gpio-2/i2c-5/5-0038/input/input3
Unable to handle kernel NULL pointer dereference at virtual address 00000018
pgd = (ptrval)
[00000018] *pgd=55dac831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] PREEMPT ARM
Modules linked in: bma150 input_polldev [last unloaded: bma150]
CPU: 0 PID: 2870 Comm: accelerometer Not tainted 5.0.0-rc3-dirty #46
Hardware name: Samsung S5PC110/S5PV210-based board
PC is at input_event+0x8/0x60
LR is at bma150_report_xyz+0x9c/0xe0 [bma150]
pc : [&lt;80450f70&gt;]    lr : [&lt;7f0a614c&gt;]    psr: 800d0013
sp : a4c1fd78  ip : 00000081  fp : 00020000
r10: 00000000  r9 : a5e2944c  r8 : a7455000
r7 : 00000016  r6 : 00000101  r5 : a7617940  r4 : 80909048
r3 : fffffff2  r2 : 00000000  r1 : 00000003  r0 : 00000000
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c5387d  Table: 54e34019  DAC: 00000051
Process accelerometer (pid: 2870, stack limit = 0x(ptrval))
Stackck: (0xa4c1fd78 to 0xa4c20000)
fd60:                                                       fffffff3 fc813f6c
fd80: 40410581 d7530ce3 a5e2817c a7617f00 a5e29404 a5e2817c 00000000 7f008324
fda0: a5e28000 8044f59c a5fdd9d0 a5e2945c a46a4a00 a5e29668 a7455000 80454f10
fdc0: 80909048 a5e29668 a5fdd9d0 a46a4a00 806316d0 00000000 a46a4a00 801df5f0
fde0: 00000000 d7530ce3 a4c1fec0 a46a4a00 00000000 a5fdd9d0 a46a4a08 801df53c
fe00: 00000000 801d74bc a4c1fec0 00000000 a4c1ff70 00000000 a7038da8 00000000
fe20: a46a4a00 801e91fc a411bbe0 801f2e88 00000004 00000000 80909048 00000041
fe40: 00000000 00020000 00000000 dead4ead a6a88da0 00000000 ffffe000 806fcae8
fe60: a4c1fec8 00000000 80909048 00000002 a5fdd9d0 a7660110 a411bab0 00000001
fe80: dead4ead ffffffff ffffffff a4c1fe8c a4c1fe8c d7530ce3 20000013 80909048
fea0: 80909048 a4c1ff70 00000001 fffff000 a4c1e000 00000005 00026038 801eabd8
fec0: a7660110 a411bab0 b9394901 00000006 a696201b 76fb3000 00000000 a7039720
fee0: a5fdd9d0 00000101 00000002 00000096 00000000 00000000 00000000 a4c1ff00
ff00: a6b310f4 805cb174 a6b310f4 00000010 00000fe0 00000010 a4c1e000 d7530ce3
ff20: 00000003 a5f41400 a5f41424 00000000 a6962000 00000000 00000003 00000002
ff40: ffffff9c 000a0000 80909048 d7530ce3 a6962000 00000003 80909048 ffffff9c
ff60: a6962000 801d890c 00000000 00000000 00020000 a7590000 00000004 00000100
ff80: 00000001 d7530ce3 000288b8 00026320 000288b8 00000005 80101204 a4c1e000
ffa0: 00000005 80101000 000288b8 00026320 000288b8 000a0000 00000000 00000000
ffc0: 000288b8 00026320 000288b8 00000005 7eef3bac 000264e8 00028ad8 00026038
ffe0: 00000005 7eef3300 76f76e91 76f78546 800d0030 000288b8 00000000 00000000
[&lt;80450f70&gt;] (input_event) from [&lt;a5e2817c&gt;] (0xa5e2817c)
Code: e1a08148 eaffffa8 e351001f 812fff1e (e590c018)
---[ end trace 1c691ee85f2ff243 ]---

Signed-off-by: Jonathan Bakker &lt;xc-racer2@live.ca&gt;
Signed-off-by: Paweł Chmiel &lt;pawel.mikolaj.chmiel@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: twl6040-vibra - fix child-node lookup</title>
<updated>2018-03-03T15:52:17+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2018-01-09T01:17:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=e86dc5b588f095715225a96e38a4a757a194df90'/>
<id>e86dc5b588f095715225a96e38a4a757a194df90</id>
<content type='text'>
commit dcaf12a8b0bbdbfcfa2be8dff2c4948d9844b4ad upstream.

Fix child-node lookup during probe, which ended up searching the whole
device tree depth-first starting at parent rather than just matching on
its children.

Later sanity checks on node properties (which would likely be missing)
should prevent this from causing much trouble however, especially as the
original premature free of the parent node has already been fixed
separately (but that "fix" was apparently never backported to stable).

Fixes: e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
Fixes: c52c545ead97 ("Input: twl6040-vibra - fix DT node memory management")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Acked-by: Peter Ujfalusi &lt;peter.ujfalusi@ti.com&gt;
Tested-by: H. Nikolaus Schaller &lt;hns@goldelico.com&gt; (on Pyra OMAP5 hardware)
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit dcaf12a8b0bbdbfcfa2be8dff2c4948d9844b4ad upstream.

Fix child-node lookup during probe, which ended up searching the whole
device tree depth-first starting at parent rather than just matching on
its children.

Later sanity checks on node properties (which would likely be missing)
should prevent this from causing much trouble however, especially as the
original premature free of the parent node has already been fixed
separately (but that "fix" was apparently never backported to stable).

Fixes: e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")
Fixes: c52c545ead97 ("Input: twl6040-vibra - fix DT node memory management")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Acked-by: Peter Ujfalusi &lt;peter.ujfalusi@ti.com&gt;
Tested-by: H. Nikolaus Schaller &lt;hns@goldelico.com&gt; (on Pyra OMAP5 hardware)
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: twl6040-vibra - fix DT node memory management</title>
<updated>2018-03-03T15:52:17+00:00</updated>
<author>
<name>H. Nikolaus Schaller</name>
<email>hns@goldelico.com</email>
</author>
<published>2016-05-10T00:01:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=9587050dc78baffce536a44505fce6934560db4d'/>
<id>9587050dc78baffce536a44505fce6934560db4d</id>
<content type='text'>
commit c52c545ead97fcc2f4f8ea38f1ae3c23211e09a8 upstream.

commit e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")

made the separate vibra DT node to a subnode of the twl6040.

It now calls of_find_node_by_name() to locate the "vibra" subnode.
This function has a side effect to call of_node_put on() for the twl6040
parent node passed in as a parameter. This causes trouble later on.

Solution: we must call of_node_get() before of_find_node_by_name()

Signed-off-by: H. Nikolaus Schaller &lt;hns@goldelico.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit c52c545ead97fcc2f4f8ea38f1ae3c23211e09a8 upstream.

commit e7ec014a47e4 ("Input: twl6040-vibra - update for device tree support")

made the separate vibra DT node to a subnode of the twl6040.

It now calls of_find_node_by_name() to locate the "vibra" subnode.
This function has a side effect to call of_node_put on() for the twl6040
parent node passed in as a parameter. This causes trouble later on.

Solution: we must call of_node_get() before of_find_node_by_name()

Signed-off-by: H. Nikolaus Schaller &lt;hns@goldelico.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: twl4030-vibra - fix sibling-node lookup</title>
<updated>2018-03-03T15:52:17+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2018-01-09T01:15:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=b1e8a5397077ef9c9ace3ce0577c019ada19f19c'/>
<id>b1e8a5397077ef9c9ace3ce0577c019ada19f19c</id>
<content type='text'>
commit 5b189201993ab03001a398de731045bfea90c689 upstream.

A helper purported to look up a child node based on its name was using
the wrong of-helper and ended up prematurely freeing the parent of-node
while searching the whole device tree depth-first starting at the parent
node.

Fixes: 64b9e4d803b1 ("input: twl4030-vibra: Support for DT booted kernel")
Fixes: e661d0a04462 ("Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5b189201993ab03001a398de731045bfea90c689 upstream.

A helper purported to look up a child node based on its name was using
the wrong of-helper and ended up prematurely freeing the parent of-node
while searching the whole device tree depth-first starting at the parent
node.

Fixes: 64b9e4d803b1 ("input: twl4030-vibra: Support for DT booted kernel")
Fixes: e661d0a04462 ("Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning")
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: twl4030-vibra - fix ERROR: Bad of_node_put() warning</title>
<updated>2018-03-03T15:52:16+00:00</updated>
<author>
<name>Marek Belisko</name>
<email>marek@goldelico.com</email>
</author>
<published>2015-07-29T21:02:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=1a66f52e77c68dfa15845587d3b0348692f1791b'/>
<id>1a66f52e77c68dfa15845587d3b0348692f1791b</id>
<content type='text'>
commit e661d0a04462dd98667f8947141bd8defab5b34a upstream.

Fix following:
[    8.862274] ERROR: Bad of_node_put() on /ocp/i2c@48070000/twl@48/audio
[    8.869293] CPU: 0 PID: 1003 Comm: modprobe Not tainted 4.2.0-rc2-letux+ #1175
[    8.876922] Hardware name: Generic OMAP36xx (Flattened Device Tree)
[    8.883514] [&lt;c00159e0&gt;] (unwind_backtrace) from [&lt;c0012488&gt;] (show_stack+0x10/0x14)
[    8.891693] [&lt;c0012488&gt;] (show_stack) from [&lt;c05cb810&gt;] (dump_stack+0x78/0x94)
[    8.899322] [&lt;c05cb810&gt;] (dump_stack) from [&lt;c02cfd5c&gt;] (kobject_release+0x68/0x7c)
[    8.907409] [&lt;c02cfd5c&gt;] (kobject_release) from [&lt;bf0040c4&gt;] (twl4030_vibra_probe+0x74/0x188 [twl4030_vibra])
[    8.917877] [&lt;bf0040c4&gt;] (twl4030_vibra_probe [twl4030_vibra]) from [&lt;c03816ac&gt;] (platform_drv_probe+0x48/0x90)
[    8.928497] [&lt;c03816ac&gt;] (platform_drv_probe) from [&lt;c037feb4&gt;] (really_probe+0xd4/0x238)
[    8.937103] [&lt;c037feb4&gt;] (really_probe) from [&lt;c0380160&gt;] (driver_probe_device+0x30/0x48)
[    8.945678] [&lt;c0380160&gt;] (driver_probe_device) from [&lt;c03801e0&gt;] (__driver_attach+0x68/0x8c)
[    8.954589] [&lt;c03801e0&gt;] (__driver_attach) from [&lt;c037ea60&gt;] (bus_for_each_dev+0x50/0x84)
[    8.963226] [&lt;c037ea60&gt;] (bus_for_each_dev) from [&lt;c037f828&gt;] (bus_add_driver+0xcc/0x1e4)
[    8.971832] [&lt;c037f828&gt;] (bus_add_driver) from [&lt;c0380b60&gt;] (driver_register+0x9c/0xe0)
[    8.980255] [&lt;c0380b60&gt;] (driver_register) from [&lt;c00097e0&gt;] (do_one_initcall+0x100/0x1b8)
[    8.988983] [&lt;c00097e0&gt;] (do_one_initcall) from [&lt;c00b8008&gt;] (do_init_module+0x58/0x1c0)
[    8.997497] [&lt;c00b8008&gt;] (do_init_module) from [&lt;c00b8cac&gt;] (SyS_init_module+0x54/0x64)
[    9.005950] [&lt;c00b8cac&gt;] (SyS_init_module) from [&lt;c000ed20&gt;] (ret_fast_syscall+0x0/0x54)
[    9.015838] input: twl4030:vibrator as /devices/platform/68000000.ocp/48070000.i2c/i2c-0/0-0048/48070000.i2c:twl@48:audio/input/input2

node passed to of_find_node_by_name is put inside that function and new node
is returned if found. Free returned node not already freed node.

Signed-off-by: Marek Belisko &lt;marek@goldelico.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e661d0a04462dd98667f8947141bd8defab5b34a upstream.

Fix following:
[    8.862274] ERROR: Bad of_node_put() on /ocp/i2c@48070000/twl@48/audio
[    8.869293] CPU: 0 PID: 1003 Comm: modprobe Not tainted 4.2.0-rc2-letux+ #1175
[    8.876922] Hardware name: Generic OMAP36xx (Flattened Device Tree)
[    8.883514] [&lt;c00159e0&gt;] (unwind_backtrace) from [&lt;c0012488&gt;] (show_stack+0x10/0x14)
[    8.891693] [&lt;c0012488&gt;] (show_stack) from [&lt;c05cb810&gt;] (dump_stack+0x78/0x94)
[    8.899322] [&lt;c05cb810&gt;] (dump_stack) from [&lt;c02cfd5c&gt;] (kobject_release+0x68/0x7c)
[    8.907409] [&lt;c02cfd5c&gt;] (kobject_release) from [&lt;bf0040c4&gt;] (twl4030_vibra_probe+0x74/0x188 [twl4030_vibra])
[    8.917877] [&lt;bf0040c4&gt;] (twl4030_vibra_probe [twl4030_vibra]) from [&lt;c03816ac&gt;] (platform_drv_probe+0x48/0x90)
[    8.928497] [&lt;c03816ac&gt;] (platform_drv_probe) from [&lt;c037feb4&gt;] (really_probe+0xd4/0x238)
[    8.937103] [&lt;c037feb4&gt;] (really_probe) from [&lt;c0380160&gt;] (driver_probe_device+0x30/0x48)
[    8.945678] [&lt;c0380160&gt;] (driver_probe_device) from [&lt;c03801e0&gt;] (__driver_attach+0x68/0x8c)
[    8.954589] [&lt;c03801e0&gt;] (__driver_attach) from [&lt;c037ea60&gt;] (bus_for_each_dev+0x50/0x84)
[    8.963226] [&lt;c037ea60&gt;] (bus_for_each_dev) from [&lt;c037f828&gt;] (bus_add_driver+0xcc/0x1e4)
[    8.971832] [&lt;c037f828&gt;] (bus_add_driver) from [&lt;c0380b60&gt;] (driver_register+0x9c/0xe0)
[    8.980255] [&lt;c0380b60&gt;] (driver_register) from [&lt;c00097e0&gt;] (do_one_initcall+0x100/0x1b8)
[    8.988983] [&lt;c00097e0&gt;] (do_one_initcall) from [&lt;c00b8008&gt;] (do_init_module+0x58/0x1c0)
[    8.997497] [&lt;c00b8008&gt;] (do_init_module) from [&lt;c00b8cac&gt;] (SyS_init_module+0x54/0x64)
[    9.005950] [&lt;c00b8cac&gt;] (SyS_init_module) from [&lt;c000ed20&gt;] (ret_fast_syscall+0x0/0x54)
[    9.015838] input: twl4030:vibrator as /devices/platform/68000000.ocp/48070000.i2c/i2c-0/0-0048/48070000.i2c:twl@48:audio/input/input2

node passed to of_find_node_by_name is put inside that function and new node
is returned if found. Free returned node not already freed node.

Signed-off-by: Marek Belisko &lt;marek@goldelico.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: adxl34x - do not treat FIFO_MODE() as boolean</title>
<updated>2018-02-13T18:42:02+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2017-09-20T19:04:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=16ac4c8ee991e019e4da6275b7905920379a3581'/>
<id>16ac4c8ee991e019e4da6275b7905920379a3581</id>
<content type='text'>
commit 1dbc080c9ef6bcfba652ef0d6ae919b8c7c85a1d upstream.

FIFO_MODE() is a macro expression with a '&lt;&lt;' operator, which gcc points
out could be misread as a '&lt;':

drivers/input/misc/adxl34x.c: In function 'adxl34x_probe':
drivers/input/misc/adxl34x.c:799:36: error: '&lt;&lt;' in boolean context, did you mean '&lt;' ? [-Werror=int-in-bool-context]

While utility of this warning is being disputed (Chief Penguin: "This
warning is clearly pure garbage.") FIFO_MODE() extracts range of values,
with 0 being FIFO_BYPASS, and not something that is logically boolean.

This converts the test to an explicit comparison with FIFO_BYPASS,
making it clearer to gcc and the reader what is intended.

Fixes: e27c729219ad ("Input: add driver for ADXL345/346 Digital Accelerometers")
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 1dbc080c9ef6bcfba652ef0d6ae919b8c7c85a1d upstream.

FIFO_MODE() is a macro expression with a '&lt;&lt;' operator, which gcc points
out could be misread as a '&lt;':

drivers/input/misc/adxl34x.c: In function 'adxl34x_probe':
drivers/input/misc/adxl34x.c:799:36: error: '&lt;&lt;' in boolean context, did you mean '&lt;' ? [-Werror=int-in-bool-context]

While utility of this warning is being disputed (Chief Penguin: "This
warning is clearly pure garbage.") FIFO_MODE() extracts range of values,
with 0 being FIFO_BYPASS, and not something that is logically boolean.

This converts the test to an explicit comparison with FIFO_BYPASS,
making it clearer to gcc and the reader what is intended.

Fixes: e27c729219ad ("Input: add driver for ADXL345/346 Digital Accelerometers")
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: ims-psu - check if CDC union descriptor is sane</title>
<updated>2018-01-01T20:52:08+00:00</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2017-10-07T18:07:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=eb791765b62b2a615fb692c3394d86f370d72681'/>
<id>eb791765b62b2a615fb692c3394d86f370d72681</id>
<content type='text'>
commit ea04efee7635c9120d015dcdeeeb6988130cb67a upstream.

Before trying to use CDC union descriptor, try to validate whether that it
is sane by checking that intf-&gt;altsetting-&gt;extra is big enough and that
descriptor bLength is not too big and not too small.

Reported-by: Andrey Konovalov &lt;andreyknvl@google.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit ea04efee7635c9120d015dcdeeeb6988130cb67a upstream.

Before trying to use CDC union descriptor, try to validate whether that it
is sane by checking that intf-&gt;altsetting-&gt;extra is big enough and that
descriptor bLength is not too big and not too small.

Reported-by: Andrey Konovalov &lt;andreyknvl@google.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: uinput - avoid crash when sending FF request to device going away</title>
<updated>2018-01-01T20:51:36+00:00</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2017-09-06T23:22:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=c6e48871d9da941df7ce17ed0e2fafea00292eab'/>
<id>c6e48871d9da941df7ce17ed0e2fafea00292eab</id>
<content type='text'>
commit 6b4877c7bdc6ae39ce03716df7caeecf204697eb upstream.

If FF request comes in while uinput device is going away,
uinput_request_send() will fail with -ENODEV, and uinput_request_submit()
will attempt to mark the slot as unused by calling uinput_request_done().
Unfortunately in this case we haven't initialized request-&gt;done completion
yet, and we get a crash:

[   39.402036] BUG: spinlock bad magic on CPU#1, fftest/3108
[   39.402046]  lock: 0xffff88006a93bb00, .magic: 00000000, .owner: /39, .owner_cpu: 1217155072
[   39.402055] CPU: 1 PID: 3108 Comm: fftest Tainted: G        W 4.13.0+ #15
[   39.402059] Hardware name: LENOVO 20HQS0EG02/20HQS0EG02, BIOS N1MET37W (1.22 ) 07/04/2017
[   39.402064]  0000000000000086 f0fad82f3ceaa120 ffff88006a93b9a0 ffffffff9de941bb
[   39.402077]  ffff88026df8ae00 ffff88006a93bb00 ffff88006a93b9c0 ffffffff9dca62b7
[   39.402088]  ffff88006a93bb00 ffff88006a93baf8 ffff88006a93b9e0 ffffffff9dca62e7
[   39.402099] Call Trace:
[   39.402112]  [&lt;ffffffff9de941bb&gt;] dump_stack+0x4d/0x63
[   39.402123]  [&lt;ffffffff9dca62b7&gt;] spin_dump+0x97/0x9c
[   39.402130]  [&lt;ffffffff9dca62e7&gt;] spin_bug+0x2b/0x2d
[   39.402138]  [&lt;ffffffff9dca6373&gt;] do_raw_spin_lock+0x28/0xfd
[   39.402147]  [&lt;ffffffff9e3055cd&gt;] _raw_spin_lock_irqsave+0x19/0x1f
[   39.402154]  [&lt;ffffffff9dca05b7&gt;] complete+0x1d/0x48
[   39.402162]  [&lt;ffffffffc04f30af&gt;] 0xffffffffc04f30af
[   39.402167]  [&lt;ffffffffc04f468c&gt;] 0xffffffffc04f468c
[   39.402177]  [&lt;ffffffff9dd59c16&gt;] ? __slab_free+0x22f/0x359
[   39.402184]  [&lt;ffffffff9dcc13e9&gt;] ? tk_clock_read+0xc/0xe
[   39.402189]  [&lt;ffffffffc04f471f&gt;] 0xffffffffc04f471f
[   39.402195]  [&lt;ffffffff9dc9ffe5&gt;] ? __wake_up+0x44/0x4b
[   39.402200]  [&lt;ffffffffc04f3240&gt;] ? 0xffffffffc04f3240
[   39.402207]  [&lt;ffffffff9e0f57f3&gt;] erase_effect+0xa1/0xd2
[   39.402214]  [&lt;ffffffff9e0f58c6&gt;] input_ff_flush+0x43/0x5c
[   39.402219]  [&lt;ffffffffc04f32ad&gt;] 0xffffffffc04f32ad
[   39.402227]  [&lt;ffffffff9e0f174f&gt;] input_flush_device+0x3d/0x51
[   39.402234]  [&lt;ffffffff9e0f69ae&gt;] evdev_flush+0x49/0x5c
[   39.402243]  [&lt;ffffffff9dd62d6e&gt;] filp_close+0x3f/0x65
[   39.402253]  [&lt;ffffffff9dd7dcf7&gt;] put_files_struct+0x66/0xc1
[   39.402261]  [&lt;ffffffff9dd7ddeb&gt;] exit_files+0x47/0x4e
[   39.402270]  [&lt;ffffffff9dc6b329&gt;] do_exit+0x483/0x969
[   39.402278]  [&lt;ffffffff9dc73211&gt;] ? recalc_sigpending_tsk+0x3d/0x44
[   39.402285]  [&lt;ffffffff9dc6c7a2&gt;] do_group_exit+0x42/0xb0
[   39.402293]  [&lt;ffffffff9dc767e1&gt;] get_signal+0x58d/0x5bf
[   39.402300]  [&lt;ffffffff9dc03701&gt;] do_signal+0x37/0x53e
[   39.402307]  [&lt;ffffffff9e0f8401&gt;] ? evdev_ioctl_handler+0xac8/0xb04
[   39.402314]  [&lt;ffffffff9e0f8464&gt;] ? evdev_ioctl+0x10/0x12
[   39.402321]  [&lt;ffffffff9dd74cfa&gt;] ? do_vfs_ioctl+0x42e/0x501
[   39.402328]  [&lt;ffffffff9dc0170e&gt;] prepare_exit_to_usermode+0x66/0x90
[   39.402333]  [&lt;ffffffff9dc0181b&gt;] syscall_return_slowpath+0xe3/0xec
[   39.402339]  [&lt;ffffffff9e305b7b&gt;] int_ret_from_sys_call+0x25/0x8f

While we could solve this by simply initializing the completion earlier, we
are better off rearranging the code a bit so we avoid calling complete() on
requests that we did not send out. This patch consolidates marking request
slots as free in one place (in uinput_request_submit(), the same place
where we acquire them) and having everyone else simply signal completion
of the requests.

Fixes: 00ce756ce53a ("Input: uinput - mark failed submission requests as free")
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6b4877c7bdc6ae39ce03716df7caeecf204697eb upstream.

If FF request comes in while uinput device is going away,
uinput_request_send() will fail with -ENODEV, and uinput_request_submit()
will attempt to mark the slot as unused by calling uinput_request_done().
Unfortunately in this case we haven't initialized request-&gt;done completion
yet, and we get a crash:

[   39.402036] BUG: spinlock bad magic on CPU#1, fftest/3108
[   39.402046]  lock: 0xffff88006a93bb00, .magic: 00000000, .owner: /39, .owner_cpu: 1217155072
[   39.402055] CPU: 1 PID: 3108 Comm: fftest Tainted: G        W 4.13.0+ #15
[   39.402059] Hardware name: LENOVO 20HQS0EG02/20HQS0EG02, BIOS N1MET37W (1.22 ) 07/04/2017
[   39.402064]  0000000000000086 f0fad82f3ceaa120 ffff88006a93b9a0 ffffffff9de941bb
[   39.402077]  ffff88026df8ae00 ffff88006a93bb00 ffff88006a93b9c0 ffffffff9dca62b7
[   39.402088]  ffff88006a93bb00 ffff88006a93baf8 ffff88006a93b9e0 ffffffff9dca62e7
[   39.402099] Call Trace:
[   39.402112]  [&lt;ffffffff9de941bb&gt;] dump_stack+0x4d/0x63
[   39.402123]  [&lt;ffffffff9dca62b7&gt;] spin_dump+0x97/0x9c
[   39.402130]  [&lt;ffffffff9dca62e7&gt;] spin_bug+0x2b/0x2d
[   39.402138]  [&lt;ffffffff9dca6373&gt;] do_raw_spin_lock+0x28/0xfd
[   39.402147]  [&lt;ffffffff9e3055cd&gt;] _raw_spin_lock_irqsave+0x19/0x1f
[   39.402154]  [&lt;ffffffff9dca05b7&gt;] complete+0x1d/0x48
[   39.402162]  [&lt;ffffffffc04f30af&gt;] 0xffffffffc04f30af
[   39.402167]  [&lt;ffffffffc04f468c&gt;] 0xffffffffc04f468c
[   39.402177]  [&lt;ffffffff9dd59c16&gt;] ? __slab_free+0x22f/0x359
[   39.402184]  [&lt;ffffffff9dcc13e9&gt;] ? tk_clock_read+0xc/0xe
[   39.402189]  [&lt;ffffffffc04f471f&gt;] 0xffffffffc04f471f
[   39.402195]  [&lt;ffffffff9dc9ffe5&gt;] ? __wake_up+0x44/0x4b
[   39.402200]  [&lt;ffffffffc04f3240&gt;] ? 0xffffffffc04f3240
[   39.402207]  [&lt;ffffffff9e0f57f3&gt;] erase_effect+0xa1/0xd2
[   39.402214]  [&lt;ffffffff9e0f58c6&gt;] input_ff_flush+0x43/0x5c
[   39.402219]  [&lt;ffffffffc04f32ad&gt;] 0xffffffffc04f32ad
[   39.402227]  [&lt;ffffffff9e0f174f&gt;] input_flush_device+0x3d/0x51
[   39.402234]  [&lt;ffffffff9e0f69ae&gt;] evdev_flush+0x49/0x5c
[   39.402243]  [&lt;ffffffff9dd62d6e&gt;] filp_close+0x3f/0x65
[   39.402253]  [&lt;ffffffff9dd7dcf7&gt;] put_files_struct+0x66/0xc1
[   39.402261]  [&lt;ffffffff9dd7ddeb&gt;] exit_files+0x47/0x4e
[   39.402270]  [&lt;ffffffff9dc6b329&gt;] do_exit+0x483/0x969
[   39.402278]  [&lt;ffffffff9dc73211&gt;] ? recalc_sigpending_tsk+0x3d/0x44
[   39.402285]  [&lt;ffffffff9dc6c7a2&gt;] do_group_exit+0x42/0xb0
[   39.402293]  [&lt;ffffffff9dc767e1&gt;] get_signal+0x58d/0x5bf
[   39.402300]  [&lt;ffffffff9dc03701&gt;] do_signal+0x37/0x53e
[   39.402307]  [&lt;ffffffff9e0f8401&gt;] ? evdev_ioctl_handler+0xac8/0xb04
[   39.402314]  [&lt;ffffffff9e0f8464&gt;] ? evdev_ioctl+0x10/0x12
[   39.402321]  [&lt;ffffffff9dd74cfa&gt;] ? do_vfs_ioctl+0x42e/0x501
[   39.402328]  [&lt;ffffffff9dc0170e&gt;] prepare_exit_to_usermode+0x66/0x90
[   39.402333]  [&lt;ffffffff9dc0181b&gt;] syscall_return_slowpath+0xe3/0xec
[   39.402339]  [&lt;ffffffff9e305b7b&gt;] int_ret_from_sys_call+0x25/0x8f

While we could solve this by simply initializing the completion earlier, we
are better off rearranging the code a bit so we avoid calling complete() on
requests that we did not send out. This patch consolidates marking request
slots as free in one place (in uinput_request_submit(), the same place
where we acquire them) and having everyone else simply signal completion
of the requests.

Fixes: 00ce756ce53a ("Input: uinput - mark failed submission requests as free")
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Input: uinput - avoid FF flush when destroying device</title>
<updated>2018-01-01T20:51:36+00:00</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2017-09-02T00:13:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=0c4413414480a84065b566fe0a098fca2ffcf373'/>
<id>0c4413414480a84065b566fe0a098fca2ffcf373</id>
<content type='text'>
commit e8b95728f724797f958912fd9b765a695595d3a6 upstream.

Normally, when input device supporting force feedback effects is being
destroyed, we try to "flush" currently playing effects, so that the
physical device does not continue vibrating (or executing other effects).
Unfortunately this does not work well for uinput as flushing of the effects
deadlocks with the destroy action:

- if device is being destroyed because the file descriptor is being closed,
  then there is noone to even service FF requests;

- if device is being destroyed because userspace sent UI_DEV_DESTROY,
  while theoretically it could be possible to service FF requests,
  userspace is unlikely to do so (they'd need to make sure FF handling
  happens on a separate thread) even if kernel solves the issue with FF
  ioctls deadlocking with UI_DEV_DESTROY ioctl on udev-&gt;mutex.

To avoid lockups like the one below, let's install a custom input device
flush handler, and avoid trying to flush force feedback effects when we
destroying the device, and instead rely on uinput to shut off the device
properly.

NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
...
 &lt;&lt;EOE&gt;&gt;  [&lt;ffffffff817a0307&gt;] _raw_spin_lock_irqsave+0x37/0x40
 [&lt;ffffffff810e633d&gt;] complete+0x1d/0x50
 [&lt;ffffffffa00ba08c&gt;] uinput_request_done+0x3c/0x40 [uinput]
 [&lt;ffffffffa00ba587&gt;] uinput_request_submit.part.7+0x47/0xb0 [uinput]
 [&lt;ffffffffa00bb62b&gt;] uinput_dev_erase_effect+0x5b/0x76 [uinput]
 [&lt;ffffffff815d91ad&gt;] erase_effect+0xad/0xf0
 [&lt;ffffffff815d929d&gt;] flush_effects+0x4d/0x90
 [&lt;ffffffff815d4cc0&gt;] input_flush_device+0x40/0x60
 [&lt;ffffffff815daf1c&gt;] evdev_cleanup+0xac/0xc0
 [&lt;ffffffff815daf5b&gt;] evdev_disconnect+0x2b/0x60
 [&lt;ffffffff815d74ac&gt;] __input_unregister_device+0xac/0x150
 [&lt;ffffffff815d75f7&gt;] input_unregister_device+0x47/0x70
 [&lt;ffffffffa00bac45&gt;] uinput_destroy_device+0xb5/0xc0 [uinput]
 [&lt;ffffffffa00bb2de&gt;] uinput_ioctl_handler.isra.9+0x65e/0x740 [uinput]
 [&lt;ffffffff811231ab&gt;] ? do_futex+0x12b/0xad0
 [&lt;ffffffffa00bb3f8&gt;] uinput_ioctl+0x18/0x20 [uinput]
 [&lt;ffffffff81241248&gt;] do_vfs_ioctl+0x298/0x480
 [&lt;ffffffff81337553&gt;] ? security_file_ioctl+0x43/0x60
 [&lt;ffffffff812414a9&gt;] SyS_ioctl+0x79/0x90
 [&lt;ffffffff817a04ee&gt;] entry_SYSCALL_64_fastpath+0x12/0x71

Reported-by: Rodrigo Rivas Costa &lt;rodrigorivascosta@gmail.com&gt;
Reported-by: Clément VUCHENER &lt;clement.vuchener@gmail.com&gt;
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=193741
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e8b95728f724797f958912fd9b765a695595d3a6 upstream.

Normally, when input device supporting force feedback effects is being
destroyed, we try to "flush" currently playing effects, so that the
physical device does not continue vibrating (or executing other effects).
Unfortunately this does not work well for uinput as flushing of the effects
deadlocks with the destroy action:

- if device is being destroyed because the file descriptor is being closed,
  then there is noone to even service FF requests;

- if device is being destroyed because userspace sent UI_DEV_DESTROY,
  while theoretically it could be possible to service FF requests,
  userspace is unlikely to do so (they'd need to make sure FF handling
  happens on a separate thread) even if kernel solves the issue with FF
  ioctls deadlocking with UI_DEV_DESTROY ioctl on udev-&gt;mutex.

To avoid lockups like the one below, let's install a custom input device
flush handler, and avoid trying to flush force feedback effects when we
destroying the device, and instead rely on uinput to shut off the device
properly.

NMI watchdog: Watchdog detected hard LOCKUP on cpu 3
...
 &lt;&lt;EOE&gt;&gt;  [&lt;ffffffff817a0307&gt;] _raw_spin_lock_irqsave+0x37/0x40
 [&lt;ffffffff810e633d&gt;] complete+0x1d/0x50
 [&lt;ffffffffa00ba08c&gt;] uinput_request_done+0x3c/0x40 [uinput]
 [&lt;ffffffffa00ba587&gt;] uinput_request_submit.part.7+0x47/0xb0 [uinput]
 [&lt;ffffffffa00bb62b&gt;] uinput_dev_erase_effect+0x5b/0x76 [uinput]
 [&lt;ffffffff815d91ad&gt;] erase_effect+0xad/0xf0
 [&lt;ffffffff815d929d&gt;] flush_effects+0x4d/0x90
 [&lt;ffffffff815d4cc0&gt;] input_flush_device+0x40/0x60
 [&lt;ffffffff815daf1c&gt;] evdev_cleanup+0xac/0xc0
 [&lt;ffffffff815daf5b&gt;] evdev_disconnect+0x2b/0x60
 [&lt;ffffffff815d74ac&gt;] __input_unregister_device+0xac/0x150
 [&lt;ffffffff815d75f7&gt;] input_unregister_device+0x47/0x70
 [&lt;ffffffffa00bac45&gt;] uinput_destroy_device+0xb5/0xc0 [uinput]
 [&lt;ffffffffa00bb2de&gt;] uinput_ioctl_handler.isra.9+0x65e/0x740 [uinput]
 [&lt;ffffffff811231ab&gt;] ? do_futex+0x12b/0xad0
 [&lt;ffffffffa00bb3f8&gt;] uinput_ioctl+0x18/0x20 [uinput]
 [&lt;ffffffff81241248&gt;] do_vfs_ioctl+0x298/0x480
 [&lt;ffffffff81337553&gt;] ? security_file_ioctl+0x43/0x60
 [&lt;ffffffff812414a9&gt;] SyS_ioctl+0x79/0x90
 [&lt;ffffffff817a04ee&gt;] entry_SYSCALL_64_fastpath+0x12/0x71

Reported-by: Rodrigo Rivas Costa &lt;rodrigorivascosta@gmail.com&gt;
Reported-by: Clément VUCHENER &lt;clement.vuchener@gmail.com&gt;
Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=193741
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
</feed>
