linux/drivers/bluetooth
Vladis Dronov ebb8302ce7 Bluetooth: hci_uart: check for missing tty operations
commit b36a1552d7 upstream.

Certain ttys operations (pty_unix98_ops) lack tiocmget() and tiocmset()
functions which are called by the certain HCI UART protocols (hci_ath,
hci_bcm, hci_intel, hci_mrvl, hci_qca) via hci_uart_set_flow_control()
or directly. This leads to an execution at NULL and can be triggered by
an unprivileged user. Fix this by adding a helper function and a check
for the missing tty operations in the protocols code.

This fixes CVE-2019-10207. The Fixes: lines list commits where calls to
tiocm[gs]et() or hci_uart_set_flow_control() were added to the HCI UART
protocols.

Link: https://syzkaller.appspot.com/bug?id=1b42faa2848963564a5b1b7f8c837ea7b55ffa50
Reported-by: syzbot+79337b501d6aa974d0f6@syzkaller.appspotmail.com
Fixes: b3190df628 ("Bluetooth: Support for Atheros AR300x serial chip")
Fixes: 118612fb91 ("Bluetooth: hci_bcm: Add suspend/resume PM functions")
Fixes: ff2895592f ("Bluetooth: hci_intel: Add Intel baudrate configuration support")
Fixes: 162f812f23 ("Bluetooth: hci_uart: Add Marvell support")
Fixes: fa9ad876b8 ("Bluetooth: hci_qca: Add support for Qualcomm Bluetooth chip wcn3990")
Signed-off-by: Vladis Dronov <vdronov@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Reviewed-by: Yu-Chen, Cho <acho@suse.com>
Tested-by: Yu-Chen, Cho <acho@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.16:
 - Only hci_ath is affected
 - There is no serdev support]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-08-13 12:39:25 +01:00
..
ath3k.c Bluetooth: Add another AR3012 04ca:3018 device 2017-06-05 21:17:09 +01:00
bcm203x.c Bluetooth: Use devm_kzalloc in bcm203x.c file. 2012-08-06 15:03:00 -03:00
bfusb.c Bluetooth: Remove assignments in if-statements 2014-03-05 20:52:17 +02:00
bluecard_cs.c Bluetooth: bluecard: Use del_timer_sync() in teardown path 2014-03-23 10:30:22 -07:00
bpa10x.c Bluetooth: Declare bpa10x_table[] as const 2013-10-11 17:05:22 +02:00
bt3c_cs.c Bluetooth: Remove assignments in if-statements 2014-03-05 20:52:17 +02:00
btmrvl_debugfs.c Bluetooth: replace strict_strtol() with kstrtol() 2013-07-25 14:15:25 +01:00
btmrvl_drv.h Bluetooth: btmrvl: wait for HOST_SLEEP_ENABLE event in suspend 2014-09-17 09:22:13 -07:00
btmrvl_main.c Bluetooth: Fix crash in the Marvell driver initialization codepath 2014-12-01 15:46:31 +00:00
btmrvl_sdio.c Bluetooth: btmrvl: implement read-to-clear for SD8897 interrupts 2014-03-28 19:37:06 -07:00
btmrvl_sdio.h Bluetooth: btmrvl: implement read-to-clear for SD8897 interrupts 2014-03-28 19:37:06 -07:00
btsdio.c Bluetooth: Use MD SET register for changing SDIO Type-B to Type-A 2013-12-29 21:31:07 +02:00
btuart_cs.c Bluetooth: Remove assignments in if-statements 2014-03-05 20:52:17 +02:00
btusb.c Bluetooth: Add another AR3012 04ca:3018 device 2017-06-05 21:17:09 +01:00
btwilink.c Bluetooth: Add hdev parameter to hdev->send driver callback 2013-10-11 15:28:03 +02:00
dtl1_cs.c Bluetooth: Remove assignments in if-statements 2014-03-05 20:52:17 +02:00
hci_ath.c Bluetooth: hci_uart: check for missing tty operations 2019-08-13 12:39:25 +01:00
hci_bcsp.c Bluetooth: Remove assignments in if-statements 2014-03-05 20:52:17 +02:00
hci_h4.c Bluetooth: Remove hci_h4 unused defines 2014-04-24 11:55:26 -03:00
hci_h5.c Bluetooth: Fix HCI H5 corrupted ack value 2014-10-30 09:40:15 -07:00
hci_ldisc.c Bluetooth: hci_uart: check for missing tty operations 2019-08-13 12:39:25 +01:00
hci_ll.c Bluetooth: Add hdev parameter to hdev->send driver callback 2013-10-11 15:28:03 +02:00
hci_uart.h Bluetooth: hci_uart: check for missing tty operations 2019-08-13 12:39:25 +01:00
hci_vhci.c Bluetooth: vhci: Fix race at creating hci device 2016-08-22 22:37:50 +01:00
Kconfig Bluetooth: add module name for btwilink 2014-03-10 14:11:02 +01:00
Makefile Bluetooth: Enable -D__CHECK_ENDIAN__ for sparse by default 2013-10-02 09:10:05 +03:00