• David Herrmann's avatar
    Bluetooth: Move device initialization to hci_alloc_dev() · b1b813d4
    David Herrmann authored
    We currently initialize locks, lists, works, etc. in hci_register_dev()
    (hci_alloc_dev() was added later) which is bogus because an hdev is in an
    invalid state if it is not registered.
    This patch moves all memory initialization to hci_alloc_dev(). Device
    registering and registration of sub-modules is still left in
    hci_register_dev() as it belongs there.
    
    The benefit is (despite cleaning up the code-base) we can now always be
    sure that an hdev is a valid object and can be locked and worked on even
    though it may not be registered.
    
    This patch also reorders the initialization to be easier to understand.
    First the memory is initialized, then all generic structures and as last
    step the sub-init functions are called. This guarantees that all
    dependencies are initialized in the right order and makes it also easier
    to find a specific line. We previously initialized it in the same order as
    the "struct hci_dev" is declared which seems pretty random.
    Signed-off-by: default avatarDavid Herrmann <dh.herrmann@googlemail.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    b1b813d4
hci_core.c 62.2 KB