diff options
author | David S. Miller <davem@davemloft.net> | 2018-03-07 16:51:14 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-07 16:51:14 +0100 |
commit | 89036a2a9852f70dcec97d5962974fe806828382 (patch) | |
tree | 664636cc767a85f98613a5178b564df4afafeddb | |
parent | fsl/fman: avoid sleeping in atomic context while adding an address (diff) | |
parent | Bluetooth: Fix missing encryption refresh on Security Request (diff) | |
download | linux-89036a2a9852f70dcec97d5962974fe806828382.tar.xz linux-89036a2a9852f70dcec97d5962974fe806828382.zip |
Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth
Johan Hedberg says:
====================
pull request: bluetooth 2018-03-05
Here are a few more Bluetooth fixes for the 4.16 kernel:
- btusb: reset/resume fixes for Yoga 920 and Dell OptiPlex 3060
- Fix for missing encryption refresh with the Security Manager protocol
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/bluetooth/btusb.c | 6 | ||||
-rw-r--r-- | net/bluetooth/smp.c | 8 |
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 60bf04b8f103..382be00a8329 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -386,10 +386,10 @@ static const struct usb_device_id blacklist_table[] = { */ static const struct dmi_system_id btusb_needs_reset_resume_table[] = { { - /* Lenovo Yoga 920 (QCA Rome device 0cf3:e300) */ + /* Dell OptiPlex 3060 (QCA ROME device 0cf3:e007) */ .matches = { - DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), - DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 920"), + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 3060"), }, }, {} diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 01117ae84f1d..a2ddae2f37d7 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -2296,8 +2296,14 @@ static u8 smp_cmd_security_req(struct l2cap_conn *conn, struct sk_buff *skb) else sec_level = authreq_to_seclevel(auth); - if (smp_sufficient_security(hcon, sec_level, SMP_USE_LTK)) + if (smp_sufficient_security(hcon, sec_level, SMP_USE_LTK)) { + /* If link is already encrypted with sufficient security we + * still need refresh encryption as per Core Spec 5.0 Vol 3, + * Part H 2.4.6 + */ + smp_ltk_encrypt(conn, hcon->sec_level); return 0; + } if (sec_level > hcon->pending_sec_level) hcon->pending_sec_level = sec_level; |