• J
    Bluetooth: Fix mgmt response status when removing adapter · 9845904f
    Johan Hedberg 提交于
    When an adapter is removed (hci_unregister_dev) any pending mgmt
    commands for that adapter should get the appropriate INVALID_INDEX
    response. Since hci_unregister_dev() calls hci_dev_do_close() first
    that'd so far have caused "not powered" responses to be sent.
    
    Skipping the HCI_UNREGISTER case in mgmt_powered() is also not a
    solution since before reaching the mgmt_index_removed() stage any
    hci_conn callbacks (e.g. used by pairing) will get called, thereby
    causing "disconnected" status responses to be sent.
    
    The fix that covers all scenarios is to handle both INVALID_INDEX and
    NOT_POWERED responses through the mgmt_powered() function. The
    INVALID_INDEX response sending from mgmt_index_removed() is left
    untouched since there are a couple of places not related to powering off
    or removing an adapter that call it (e.g. configuring a new bdaddr).
    Signed-off-by: NJohan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: NMarcel Holtmann <marcel@holtmann.org>
    9845904f
mgmt.c 171.8 KB