• J
    Bluetooth: hci_ldisc: Initialize hci_dev before open() · f67202f7
    Jeremy Cline 提交于
    commit 32a7b4cbe93b0a0ef7e63d31ca69ce54736c4412 upstream.
    
    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@syzkaller.appspotmail.com
    Signed-off-by: NJeremy Cline <jcline@redhat.com>
    Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    f67202f7
hci_ldisc.c 20.2 KB