• Marcel Holtmann's avatar
    Bluetooth: Fix regression with minimum encryption key size alignment · 693cd8ce
    Marcel Holtmann authored
    When trying to align the minimum encryption key size requirement for
    Bluetooth connections, it turns out doing this in a central location in
    the HCI connection handling code is not possible.
    
    Original Bluetooth version up to 2.0 used a security model where the
    L2CAP service would enforce authentication and encryption.  Starting
    with Bluetooth 2.1 and Secure Simple Pairing that model has changed into
    that the connection initiator is responsible for providing an encrypted
    ACL link before any L2CAP communication can happen.
    
    Now connecting Bluetooth 2.1 or later devices with Bluetooth 2.0 and
    before devices are causing a regression.  The encryption key size check
    needs to be moved out of the HCI connection handling into the L2CAP
    channel setup.
    
    To achieve this, the current check inside hci_conn_security() has been
    moved into l2cap_check_enc_key_size() helper function and then called
    from four decisions point inside L2CAP to cover all combinations of
    Secure Simple Pairing enabled devices and device using legacy pairing
    and legacy service security model.
    
    Fixes: d5bb334a ("Bluetooth: Align minimum encryption key size for LE and BR/EDR connections")
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=203643Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    693cd8ce
l2cap_core.c 181 KB