<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/bluetooth/hidp/core.c, branch linux-3.16.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.16.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2018-09-25T22:47:25Z</updated>
<entry>
<title>Bluetooth: hidp: buffer overflow in hidp_process_report</title>
<updated>2018-09-25T22:47:25Z</updated>
<author>
<name>Mark Salyzyn</name>
</author>
<published>2018-07-31T22:02:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=556fa3e5feba266ebfb14df4509ef0a69b0b1f24'/>
<id>urn:sha1:556fa3e5feba266ebfb14df4509ef0a69b0b1f24</id>
<content type='text'>
commit 7992c18810e568b95c869b227137a2215702a805 upstream.

CVE-2018-9363

The buffer length is unsigned at all layers, but gets cast to int and
checked in hidp_process_report and can lead to a buffer overflow.
Switch len parameter to unsigned int to resolve issue.

This affects 3.18 and newer kernels.

Signed-off-by: Mark Salyzyn &lt;salyzyn@android.com&gt;
Fixes: a4b1b5877b514b276f0f31efe02388a9c2836728 ("HID: Bluetooth: hidp: make sure input buffers are big enough")
Cc: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Cc: Johan Hedberg &lt;johan.hedberg@gmail.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Cc: Kees Cook &lt;keescook@chromium.org&gt;
Cc: Benjamin Tissoires &lt;benjamin.tissoires@redhat.com&gt;
Cc: linux-bluetooth@vger.kernel.org
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: security@kernel.org
Cc: kernel-team@android.com
Acked-by: Kees Cook &lt;keescook@chromium.org&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>Bluetooth: hidp_connection_add() unsafe use of l2cap_pi()</title>
<updated>2018-06-16T21:21:29Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2014-12-19T06:20:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3738d7b1da4d6f306ca6d5a6a96dd70c36f53f94'/>
<id>urn:sha1:3738d7b1da4d6f306ca6d5a6a96dd70c36f53f94</id>
<content type='text'>
commit 51bda2bca53b265715ca1852528f38dc67429d9a upstream.

it's OK after we'd verified the sockets, but not before that.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>Bluetooth: hidp: fix device disconnect on idle timeout</title>
<updated>2015-12-13T17:48:51Z</updated>
<author>
<name>David Herrmann</name>
</author>
<published>2015-09-07T10:05:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=38cfa4dc3ce6136e38e41061f8cd1b191d8c3980'/>
<id>urn:sha1:38cfa4dc3ce6136e38e41061f8cd1b191d8c3980</id>
<content type='text'>
commit 660f0fc07d21114549c1862e67e78b1cf0c90c29 upstream.

The HIDP specs define an idle-timeout which automatically disconnects a
device. This has always been implemented in the HIDP layer and forced a
synchronous shutdown of the hidp-scheduler. This works just fine, but
lacks a forced disconnect on the underlying l2cap channels. This has been
broken since:

    commit 5205185d461d5902325e457ca80bd421127b7308
    Author: David Herrmann &lt;dh.herrmann@gmail.com&gt;
    Date:   Sat Apr 6 20:28:47 2013 +0200

        Bluetooth: hidp: remove old session-management

The old session-management always forced an l2cap error on the ctrl/intr
channels when shutting down. The new session-management skips this, as we
don't want to enforce channel policy on the caller. In other words, if
user-space removes an HIDP device, the underlying channels (which are
*owned* and *referenced* by user-space) are still left active. User-space
needs to call shutdown(2) or close(2) to release them.

Unfortunately, this does not work with idle-timeouts. There is no way to
signal user-space that the HIDP layer has been stopped. The API simply
does not support any event-passing except for poll(2). Hence, we restore
old behavior and force EUNATCH on the sockets if the HIDP layer is
disconnected due to idle-timeouts (behavior of explicit disconnects
remains unmodified). User-space can still call

    getsockopt(..., SO_ERROR, ...)

..to retrieve the EUNATCH error and clear sk_err. Hence, the channels can
still be re-used (which nobody does so far, though). Therefore, the API
still supports the new behavior, but with this patch it's also compatible
to the old implicit channel shutdown.

Reported-by: Mark Haun &lt;haunma@keteu.org&gt;
Reported-by: Luiz Augusto von Dentz &lt;luiz.dentz@gmail.com&gt;
Signed-off-by: David Herrmann &lt;dh.herrmann@gmail.com&gt;
Signed-off-by: Marcel Holtmann &lt;marcel@holtmann.org&gt;
Signed-off-by: Luis Henriques &lt;luis.henriques@canonical.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-3.15/hid-core-ll-transport-cleanup' into for-linus</title>
<updated>2014-04-01T17:05:09Z</updated>
<author>
<name>Jiri Kosina</name>
</author>
<published>2014-04-01T17:05:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ad295b6d5739ab24880a31be403bbc8fab62e177'/>
<id>urn:sha1:ad295b6d5739ab24880a31be403bbc8fab62e177</id>
<content type='text'>
Conflicts:
	drivers/hid/hid-ids.h
	drivers/hid/hid-sony.c
	drivers/hid/i2c-hid/i2c-hid.c
</content>
</entry>
<entry>
<title>Merge branch 'for-3.15/ll-driver-new-callbacks' into for-linus</title>
<updated>2014-04-01T16:56:24Z</updated>
<author>
<name>Jiri Kosina</name>
</author>
<published>2014-04-01T16:56:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ee5f68e6c2f183e6aade0e9c57af13d5eff44f2f'/>
<id>urn:sha1:ee5f68e6c2f183e6aade0e9c57af13d5eff44f2f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>HID: remove hid_output_raw_report transport implementations</title>
<updated>2014-03-14T14:30:24Z</updated>
<author>
<name>Benjamin Tissoires</name>
</author>
<published>2014-03-09T03:52:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6fd182028c43baf1c7d017d52b0134ecadbdc447'/>
<id>urn:sha1:6fd182028c43baf1c7d017d52b0134ecadbdc447</id>
<content type='text'>
Nobody calls hid_output_raw_report anymore, and nobody should.
We can now remove the various implementation in the different
transport drivers and the declarations.

Reviewed-by: David Herrmann &lt;dh.herrmann@gmail.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: hidp: Add a comment that some devices depend on the current behavior of uniq</title>
<updated>2014-02-24T16:38:46Z</updated>
<author>
<name>Frank Praznik</name>
</author>
<published>2014-02-20T16:36:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dccf2f65e68d2f5b5e86ae6cf9796cf558694953'/>
<id>urn:sha1:dccf2f65e68d2f5b5e86ae6cf9796cf558694953</id>
<content type='text'>
Add a comment noting that some devices depend on the destination address being
stored in uniq.

Signed-off-by: Frank Praznik &lt;frank.praznik@oh.rr.com&gt;
Reviewed-by: David Herrmann &lt;dh.herrmann@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: Bluetooth: hidp: make sure input buffers are big enough</title>
<updated>2014-02-17T20:17:55Z</updated>
<author>
<name>David Herrmann</name>
</author>
<published>2013-12-19T11:09:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a4b1b5877b514b276f0f31efe02388a9c2836728'/>
<id>urn:sha1:a4b1b5877b514b276f0f31efe02388a9c2836728</id>
<content type='text'>
HID core expects the input buffers to be at least of size 4096
(HID_MAX_BUFFER_SIZE). Other sizes will result in buffer-overflows if an
input-report is smaller than advertised. We could, like i2c, compute the
biggest report-size instead of using HID_MAX_BUFFER_SIZE, but this will
blow up if report-descriptors are changed after -&gt;start() has been called.
So lets be safe and just use the biggest buffer we have.

Note that this adds an additional copy to the HIDP input path. If there is
a way to make sure the skb-buf is big enough, we should use that instead.

The best way would be to make hid-core honor the @size argument, though,
that sounds easier than it is. So lets just fix the buffer-overflows for
now and afterwards look for a faster way for all transport drivers.

Signed-off-by: David Herrmann &lt;dh.herrmann@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: remove hid_get_raw_report in struct hid_device</title>
<updated>2014-02-17T13:05:58Z</updated>
<author>
<name>Benjamin Tissoires</name>
</author>
<published>2014-02-05T21:33:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=cafebc058bf86e63fff5354864781d3de11e41d3'/>
<id>urn:sha1:cafebc058bf86e63fff5354864781d3de11e41d3</id>
<content type='text'>
dev-&gt;hid_get_raw_report(X) and hid_hw_raw_request(X, HID_REQ_GET_REPORT)
are strictly equivalent. Switch the hid subsystem to the hid_hw notation
and remove the field .hid_get_raw_report in struct hid_device.

Reviewed-by: David Herrmann &lt;dh.herrmann@gmail.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: HIDp: remove duplicated coded</title>
<updated>2014-02-17T13:05:56Z</updated>
<author>
<name>Benjamin Tissoires</name>
</author>
<published>2014-02-05T21:33:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e9d5da97a6a8da75f8a58b722bbd59ef474e0f47'/>
<id>urn:sha1:e9d5da97a6a8da75f8a58b722bbd59ef474e0f47</id>
<content type='text'>
- Move hidp_output_report() above
- Removed duplicated code in hidp_output_raw_report()

Reviewed-by: David Herrmann &lt;dh.herrmann@gmail.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>
</feed>
