kernel_samsung_a53x/net/bluetooth
ZhengHan Wang b6f6a12162 Bluetooth: Fix double free in hci_conn_cleanup
[ Upstream commit a85fb91e3d728bdfc80833167e8162cce8bc7004 ]

syzbot reports a slab use-after-free in hci_conn_hash_flush [1].
After releasing an object using hci_conn_del_sysfs in the
hci_conn_cleanup function, releasing the same object again
using the hci_dev_put and hci_conn_put functions causes a double free.
Here's a simplified flow:

hci_conn_del_sysfs:
  hci_dev_put
    put_device
      kobject_put
        kref_put
          kobject_release
            kobject_cleanup
              kfree_const
                kfree(name)

hci_dev_put:
  ...
    kfree(name)

hci_conn_put:
  put_device
    ...
      kfree(name)

This patch drop the hci_dev_put and hci_conn_put function
call in hci_conn_cleanup function, because the object is
freed in hci_conn_del_sysfs function.

This patch also fixes the refcounting in hci_conn_add_sysfs() and
hci_conn_del_sysfs() to take into account device_add() failures.

This fixes CVE-2023-28464.

Link: https://syzkaller.appspot.com/bug?id=1bb51491ca5df96a5f724899d1dbb87afda61419 [1]

Signed-off-by: ZhengHan Wang <wzhmmmmm@gmail.com>
Co-developed-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-18 11:43:12 +01:00
..
bnep Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cmtp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hidp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rfcomm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
6lowpan.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
a2mp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
a2mp.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
af_bluetooth.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
amp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
amp.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ecdh_helper.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ecdh_helper.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hci_conn.c Bluetooth: Fix double free in hci_conn_cleanup 2024-11-18 11:43:12 +01:00
hci_core.c Bluetooth: hci_core: Fix build warnings 2024-11-08 11:26:16 +01:00
hci_debugfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hci_debugfs.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hci_event.c Bluetooth: hci_event: Fix using memcmp when comparing keys 2024-11-08 11:26:18 +01:00
hci_request.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hci_request.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hci_sock.c Bluetooth: hci_sock: Correctly bounds check and pad HCI_MON_NEW_INDEX name 2024-11-08 11:26:20 +01:00
hci_sysfs.c Bluetooth: Fix double free in hci_conn_cleanup 2024-11-18 11:43:12 +01:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
l2cap_core.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
l2cap_sock.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
leds.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
leds.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
lib.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mgmt.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mgmt_config.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mgmt_config.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mgmt_util.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mgmt_util.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
msft.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
msft.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sco.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
selftest.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
selftest.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
smp.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00