Re: [PATCH] Bluetooth: hci_ldisc: Initialize hci_dev before open()

From: Marcel Holtmann
Date: Mon Feb 18 2019 - 07:55:34 EST


Hi Jeremy,

> The hci_dev struct hdev is referenced in work queues and timers started
> by open() in some protocols. This creates a race between the
> initialization function and the work or timer which can result hdev
> being dereferenced while it is still null.
>
> The syzbot report contains a reliable reproducer which causes a null
> pointer dereference of hdev in hci_uart_write_work() by making the
> memory allocation for hdev fail.
>
> To fix this, ensure hdev is valid from before calling a protocol's
> open() until after calling a protocol's close().
>
> Reported-by: syzbot+257790c15bcdef6fe00c@xxxxxxxxxxxxxxxxxxxxxxxxx
> Signed-off-by: Jeremy Cline <jcline@xxxxxxxxxx>
> ---
> drivers/bluetooth/hci_ldisc.c | 21 ++++++++++++++-------
> 1 file changed, 14 insertions(+), 7 deletions(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel