diff options
author | Dean Jenkins <Dean_Jenkins@mentor.com> | 2017-04-20 20:06:39 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2017-04-22 11:28:40 +0300 |
commit | cb926520e18e6aecc63614b8aa2e40d431aa29cd (patch) | |
tree | 169c45045d6a056f464e1b6d1e76ff7b232a687a /drivers/bluetooth | |
parent | eee6044f6694ae21f6f4b8e5ce4f13dbda0c112b (diff) | |
download | linux-cb926520e18e6aecc63614b8aa2e40d431aa29cd.tar.xz |
Bluetooth: hci_ldisc: Add missing return in hci_uart_init_work()
If hci_register_dev() returns an error in hci_uart_init_work()
then the HCI_UART_REGISTERED bit gets erroneously set due to
a missing return statement. Therefore, add the missing return
statement.
The consequence of the missing return is that the HCI UART is not
registered but HCI_UART_REGISTERED is set which allows the code
to think that hu->hdev is safe to access but hu->hdev has been
freed so could lead to a crash.
Signed-off-by: Dean Jenkins <Dean_Jenkins@mentor.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r-- | drivers/bluetooth/hci_ldisc.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/bluetooth/hci_ldisc.c b/drivers/bluetooth/hci_ldisc.c index cec4438ede01..1166e3f5682d 100644 --- a/drivers/bluetooth/hci_ldisc.c +++ b/drivers/bluetooth/hci_ldisc.c @@ -187,6 +187,7 @@ static void hci_uart_init_work(struct work_struct *work) hci_free_dev(hu->hdev); hu->hdev = NULL; hu->proto->close(hu); + return; } set_bit(HCI_UART_REGISTERED, &hu->flags); |