Subject: CVE-2022-48947: Bluetooth: L2CAP: Fix u8 overflow

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

Bluetooth: L2CAP: Fix u8 overflow

By keep sending L2CAP_CONF_REQ packets, chan->num_conf_rsp increases
multiple times and eventually it will wrap around the maximum number
(i.e., 255).
This patch prevents this by adding a boundary check with
L2CAP_MAX_CONF_RSP

Btmon log:
Bluetooth monitor ver 5.64
= Note: Linux version 6.1.0-rc2 (x86_64)                               0.264594
= Note: Bluetooth subsystem version 2.22                               0.264636
@ MGMT Open: btmon (privileged) version 1.22                  {0x0001} 0.272191
= New Index: 00:00:00:00:00:00 (Primary,Virtual,hci0)          [hci0] 13.877604
@ RAW Open: 9496 (privileged) version 2.22                   {0x0002} 13.890741
= Open Index: 00:00:00:00:00:00                                [hci0] 13.900426
(...)
> ACL Data RX: Handle 200 flags 0x00 dlen 1033             #32 [hci0] 14.273106
        invalid packet size (12 != 1033)
        08 00 01 00 02 01 04 00 01 10 ff ff              ............
> ACL Data RX: Handle 200 flags 0x00 dlen 1547             #33 [hci0] 14.273561
        invalid packet size (14 != 1547)
        0a 00 01 00 04 01 06 00 40 00 00 00 00 00        ........@.....
> ACL Data RX: Handle 200 flags 0x00 dlen 2061             #34 [hci0] 14.274390
        invalid packet size (16 != 2061)
        0c 00 01 00 04 01 08 00 40 00 00 00 00 00 00 04  ........@.......
> ACL Data RX: Handle 200 flags 0x00 dlen 2061             #35 [hci0] 14.274932
        invalid packet size (16 != 2061)
        0c 00 01 00 04 01 08 00 40 00 00 00 07 00 03 00  ........@.......
= bluetoothd: Bluetooth daemon 5.43                                   14.401828
> ACL Data RX: Handle 200 flags 0x00 dlen 1033             #36 [hci0] 14.275753
        invalid packet size (12 != 1033)
        08 00 01 00 04 01 04 00 40 00 00 00              ........@...

The Linux kernel CVE team has assigned CVE-2022-48947 to this issue.

Affected and fixed versions
===========================

	Fixed in 4.9.337 with commit 49d5867819ab
	Fixed in 4.14.303 with commit 95f1847a361c
	Fixed in 4.19.270 with commit ad528fde0702
	Fixed in 5.4.229 with commit 9fdc79b57143
	Fixed in 5.10.161 with commit f3fe6817156a
	Fixed in 5.15.85 with commit 19a78143961a
	Fixed in 6.0.15 with commit 5550bbf709c3
	Fixed in 6.1 with commit bcd70260ef56

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2022-48947
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	net/bluetooth/l2cap_core.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/49d5867819ab7c744852b45509e8469839c07e0e
	https://git.kernel.org/stable/c/95f1847a361c7b4bf7d74c06ecb6968455082c1a
	https://git.kernel.org/stable/c/ad528fde0702903208d0a79d88d5a42ae3fc235b
	https://git.kernel.org/stable/c/9fdc79b571434af7bc742da40a3405f038b637a7
	https://git.kernel.org/stable/c/f3fe6817156a2ad4b06f01afab04638a34d7c9a6
	https://git.kernel.org/stable/c/19a78143961a197de8502f4f29c453b913dc3c29
	https://git.kernel.org/stable/c/5550bbf709c323194881737fd290c4bada9e6ead
	https://git.kernel.org/stable/c/bcd70260ef56e0aee8a4fc6cd214a419900b0765