<feed xmlns='http://www.w3.org/2005/Atom'>
<title>talos-op-linux/drivers/hid, branch v4.10-rc2</title>
<subtitle>Talos™ II Linux sources for OpenPOWER</subtitle>
<id>https://git.raptorcs.com/git/talos-op-linux/atom?h=v4.10-rc2</id>
<link rel='self' href='https://git.raptorcs.com/git/talos-op-linux/atom?h=v4.10-rc2'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/'/>
<updated>2016-12-14T09:12:26+00:00</updated>
<entry>
<title>Merge branches 'for-4.10/asus', 'for-4.10/cp2112', 'for-4.10/i2c-hid-nopower', 'for-4.10/intel-ish', 'for-4.10/mayflash', 'for-4.10/microsoft-surface-3', 'for-4.10/multitouch', 'for-4.10/sony', 'for-4.10/udraw-ps3', 'for-4.10/upstream' and 'for-4.10/wacom/generic' into for-linus</title>
<updated>2016-12-14T09:12:26+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2016-12-14T09:12:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=96e132ebc0a162c643e0e6e6f1f85c3be3355715'/>
<id>urn:sha1:96e132ebc0a162c643e0e6e6f1f85c3be3355715</id>
<content type='text'>
</content>
</entry>
<entry>
<title>HID: fix missing irq field</title>
<updated>2016-12-12T08:47:31+00:00</updated>
<author>
<name>Benjamin Tissoires</name>
<email>benjamin.tissoires@redhat.com</email>
</author>
<published>2016-12-10T20:58:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=8cd16166b0002df427ed39e4970e0be4830199b2'/>
<id>urn:sha1:8cd16166b0002df427ed39e4970e0be4830199b2</id>
<content type='text'>
commit ba18a9314a94 ("Revert "HID: i2c-hid: Add support for ACPI GPIO
interrupts"") removed the need for storing the irq in struct i2c_hid.

But then commit de3c99488609 ("HID: i2c-hid: Disable IRQ before freeing
buffers") forgot to update the location of the irq.

Fix this by using the actual I2C client irq.

Reported-by: kbuild test robot &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Benjamin Tissoires &lt;benjamin.tissoires@redhat.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: i2c-hid: fix build</title>
<updated>2016-12-12T08:47:01+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2016-12-09T12:37:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=ba1660f1791f31a76da247caebf273b3f3d5071c'/>
<id>urn:sha1:ba1660f1791f31a76da247caebf273b3f3d5071c</id>
<content type='text'>
Add a forgotten include that I've by mistake omitted when resolving
merge conflict in ead0687fe30 ("HID: i2c-hid: support regulator power
on/off").

Fixes: ead0687fe30 ("HID: i2c-hid: support regulator power on/off")
Reported-by: kbuild test robot &lt;fengguang.wu@intel.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: i2c-hid: Disable IRQ before freeing buffers</title>
<updated>2016-12-12T08:47:01+00:00</updated>
<author>
<name>João Paulo Rechi Vita</name>
<email>jprvita@gmail.com</email>
</author>
<published>2016-12-06T20:48:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=d46ddc593f4da8d6c1b068503c04e063fa3a0e70'/>
<id>urn:sha1:d46ddc593f4da8d6c1b068503c04e063fa3a0e70</id>
<content type='text'>
The HID report buffers that are initially allocated on i2c_hid_probe()
might not be big enough to hold the HID reports from a specific device,
in which case they will be freed and new ones will be allocated in
i2c_hid_start(), at point which the device's report size is known. But
at this point ihid-&gt;irq is already running, and may call
i2c_hid_get_input() which passes ihid-&gt;inbuf to i2c_master_recv(). Since
this handler runs in a separate thread, ihid-&gt;inbuf may be freed at this
very moment, and i2c_master_recv() will write on memory which may be
already owned by a different part of the kernel, corrupting its data.

This problem has been observed on an Asus UX360UA laptop which has an
I2C touchpad, and results in a complete system freeze or an unusable
slowness with a lof of "BUG: unable to handle kernel paging request at
&lt;address&gt;" warnings. Enabling SLUB debugging shows a use-after-free
warning on memory allocated in i2c_hid_alloc_buffers() and freed in
i2c_hid_free_buffers():

=============================================================================
BUG kmalloc-64 (Not tainted): Poison overwritten
-----------------------------------------------------------------------------
Disabling lock debugging due to kernel taint
INFO: 0xffff880264083273-0xffff88026408329e. first byte 0x0 instead of 0x6b
INFO: Allocated in i2c_hid_alloc_buffers+0x25/0xa0 [i2c_hid] age=35793 cpu=2 pid=430
	___slab_alloc+0x41e/0x460
	__slab_alloc+0x20/0x40
	__kmalloc+0x210/0x280
	i2c_hid_alloc_buffers+0x25/0xa0 [i2c_hid]
	i2c_hid_probe+0x12f/0x5e0 [i2c_hid]
	i2c_device_probe+0x10a/0x1b0
	driver_probe_device+0x220/0x4a0
	__device_attach_driver+0x71/0xa0
	bus_for_each_drv+0x67/0xb0
	__device_attach+0xdc/0x170
	device_initial_probe+0x13/0x20
	bus_probe_device+0x92/0xa0
	device_add+0x4aa/0x670
	device_register+0x1a/0x20
	i2c_new_device+0x18e/0x230
	acpi_i2c_add_device+0x1a0/0x210
INFO: Freed in i2c_hid_free_buffers+0x16/0x60 [i2c_hid] age=7552 cpu=1 pid=1473
	__slab_free+0x221/0x330
	kfree+0x139/0x160
	i2c_hid_free_buffers+0x16/0x60 [i2c_hid]
	i2c_hid_start+0x2a9/0x2df [i2c_hid]
	mt_probe+0x160/0x22e [hid_multitouch]
	hid_device_probe+0xd7/0x150 [hid]
	driver_probe_device+0x220/0x4a0
	__driver_attach+0x84/0x90
	bus_for_each_dev+0x6c/0xc0
	driver_attach+0x1e/0x20
	bus_add_driver+0x1c3/0x280
	driver_register+0x60/0xe0
	__hid_register_driver+0x53/0x90 [hid]
	0xffffffffc004f01e
	do_one_initcall+0xb3/0x1f0
	do_init_module+0x5f/0x1d0
INFO: Slab 0xffffea0009902080 objects=20 used=20 fp=0x          (null) flags=0x17fff8000004080
INFO: Object 0xffff880264083260 @offset=4704 fp=0x          (null)
Bytes b4 ffff880264083250: 8d e6 fe ff 00 00 00 00 5a 5a 5a 5a 5a 5a 5a 5a  ........ZZZZZZZZ
Object ffff880264083260: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
Object ffff880264083270: 6b 6b 6b 00 00 00 00 00 00 00 00 00 00 00 00 00  kkk.............
Object ffff880264083280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Object ffff880264083290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Redzone ffff8802640832a0: bb bb bb bb bb bb bb bb                          ........
Padding ffff8802640833e0: 5a 5a 5a 5a 5a 5a 5a 5a                          ZZZZZZZZ
CPU: 1 PID: 1503 Comm: python3 Tainted: G    B           4.4.21+ #10
Hardware name: ASUSTeK COMPUTER INC. UX360UA/UX360UA, BIOS UX360UA.200 05/05/2016
 0000000000000086 00000000622d48a2 ffff88026061ba38 ffffffff813f6044
 ffff880264082010 ffff880264083260 ffff88026061ba78 ffffffff811e8eab
 0000000000000008 ffff880200000001 ffff88026408329f ffff88026a007700
Call Trace:
 [&lt;ffffffff813f6044&gt;] dump_stack+0x63/0x8f
 [&lt;ffffffff811e8eab&gt;] print_trailer+0x14b/0x1f0
 [&lt;ffffffff811e94c1&gt;] check_bytes_and_report+0xc1/0x100
 [&lt;ffffffff811e96c4&gt;] check_object+0x1c4/0x240
 [&lt;ffffffff81293fde&gt;] ? ext4_htree_store_dirent+0x3e/0x120
 [&lt;ffffffff811e9b44&gt;] alloc_debug_processing+0x104/0x180
 [&lt;ffffffff811eb7be&gt;] ___slab_alloc+0x41e/0x460
 [&lt;ffffffff81293fde&gt;] ? ext4_htree_store_dirent+0x3e/0x120
 [&lt;ffffffff8124590b&gt;] ? __getblk_gfp+0x2b/0x60
 [&lt;ffffffff8129b969&gt;] ? ext4_getblk+0xa9/0x190
 [&lt;ffffffff811eb820&gt;] __slab_alloc+0x20/0x40
 [&lt;ffffffff811ed320&gt;] __kmalloc+0x210/0x280
 [&lt;ffffffff81293fde&gt;] ? ext4_htree_store_dirent+0x3e/0x120
 [&lt;ffffffff812c1602&gt;] ? ext4fs_dirhash+0xc2/0x2a0
 [&lt;ffffffff81293fde&gt;] ext4_htree_store_dirent+0x3e/0x120
 [&lt;ffffffff812a4f47&gt;] htree_dirblock_to_tree+0x187/0x1b0
 [&lt;ffffffff812a5fd2&gt;] ext4_htree_fill_tree+0xb2/0x2e0
 [&lt;ffffffff811ebb7a&gt;] ? kmem_cache_alloc_trace+0x1fa/0x220
 [&lt;ffffffff81293e45&gt;] ? ext4_readdir+0x775/0x8b0
 [&lt;ffffffff81293cb1&gt;] ext4_readdir+0x5e1/0x8b0
 [&lt;ffffffff81221c82&gt;] iterate_dir+0x92/0x120
 [&lt;ffffffff81222118&gt;] SyS_getdents+0x98/0x110
 [&lt;ffffffff81221d10&gt;] ? iterate_dir+0x120/0x120
 [&lt;ffffffff818157f2&gt;] entry_SYSCALL_64_fastpath+0x16/0x71
FIX kmalloc-64: Restoring 0xffff880264083273-0xffff88026408329e=0x6b
FIX kmalloc-64: Marking all objects used

Signed-off-by: João Paulo Rechi Vita &lt;jprvita@endlessm.com&gt;
Reviewed-by: Benjamin Tissoires &lt;benjamin.tissoires@redhat.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: usbhid: fix improper return value</title>
<updated>2016-12-09T12:46:29+00:00</updated>
<author>
<name>Pan Bian</name>
<email>bianpan2016@163.com</email>
</author>
<published>2016-12-05T11:37:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=c60fa555b11b25386b355c141d90cbee361c3eec'/>
<id>urn:sha1:c60fa555b11b25386b355c141d90cbee361c3eec</id>
<content type='text'>
Function hid_post_reset() should return negative error codes on failures.
However, in its implementation, it incorrectly returns 1.  This patch fixes the
bug, returning proper error codes on failures.

Signed-off-by: Pan Bian &lt;bianpan2016@163.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: wacom: generic: Don't sync input on empty input packets</title>
<updated>2016-12-09T12:26:25+00:00</updated>
<author>
<name>Ping Cheng</name>
<email>pinglinux@gmail.com</email>
</author>
<published>2016-12-09T06:06:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=c9cfb2aca26505729fc37716038c692208b2a8c9'/>
<id>urn:sha1:c9cfb2aca26505729fc37716038c692208b2a8c9</id>
<content type='text'>
post input_sync only when there are input events posted

Signed-off-by: Ping Cheng &lt;ping.cheng@wacom.com&gt;
Reviewed-By: Jason Gerecke &lt;jason.gerecke@wacom.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: wacom: generic: Pad supports more than buttons</title>
<updated>2016-12-09T12:26:24+00:00</updated>
<author>
<name>Ping Cheng</name>
<email>pinglinux@gmail.com</email>
</author>
<published>2016-12-09T06:05:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=f3f24e7b69841214b62cb0669527b7121d637a9e'/>
<id>urn:sha1:f3f24e7b69841214b62cb0669527b7121d637a9e</id>
<content type='text'>
Make sure everything reported from pad are registered

Signed-off-by: Ping Cheng &lt;ping.cheng@wacom.com&gt;
Reviewed-By: Jason Gerecke &lt;jason.gerecke@wacom.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: wacom: generic: Send data only when the interface is defined</title>
<updated>2016-12-09T12:26:24+00:00</updated>
<author>
<name>Ping Cheng</name>
<email>pinglinux@gmail.com</email>
</author>
<published>2016-12-09T06:04:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=6f46cf9b40df7d181f11989bab6f4cc08787cdfe'/>
<id>urn:sha1:6f46cf9b40df7d181f11989bab6f4cc08787cdfe</id>
<content type='text'>
Sometime valid events may not be supported by the driver yet. Make
sure we don't process them when the code is not ready.

This fix prevents a kernel panic due to unsupported HID events.

Signed-off-by: Ping Cheng &lt;ping.cheng@wacom.com&gt;
Reviewed-By: Jason Gerecke &lt;jason.gerecke@wacom.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: wacom: generic: Don't return a value for wacom_wac_event</title>
<updated>2016-12-09T12:26:24+00:00</updated>
<author>
<name>Ping Cheng</name>
<email>pinglinux@gmail.com</email>
</author>
<published>2016-12-09T06:03:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=354a32985a863c9eecd381a5f9eea480d5abc6dc'/>
<id>urn:sha1:354a32985a863c9eecd381a5f9eea480d5abc6dc</id>
<content type='text'>
It is unnecessary to return a value since nothing is expecting a
value from it.

Signed-off-by: Ping Cheng &lt;ping.cheng@wacom.com&gt;
Reviewed-By: Jason Gerecke &lt;jason.gerecke@wacom.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: intel_ish-hid: use %pUL for uuid formatting</title>
<updated>2016-12-02T14:00:12+00:00</updated>
<author>
<name>Rasmus Villemoes</name>
<email>linux@rasmusvillemoes.dk</email>
</author>
<published>2016-11-30T22:48:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-op-linux/commit/?id=608ad1848b417f4b5771573ca9bfb811fcda3536'/>
<id>urn:sha1:608ad1848b417f4b5771573ca9bfb811fcda3536</id>
<content type='text'>
We have the %pU printf extension for doing exactly this. Saves some
.text, and is likely also a little faster.

Signed-off-by: Rasmus Villemoes &lt;linux@rasmusvillemoes.dk&gt;
Reviewed-by: Benjamin Tissoires &lt;benjamin.tissoires@redhat.com&gt;
Acked-by: Srinivas Pandruvada &lt;srinivas.pandruvada@linux.intel.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
</feed>
