Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp10407367ybi; Wed, 24 Jul 2019 22:39:52 -0700 (PDT) X-Google-Smtp-Source: APXvYqwziuqe/B7l+tCmeGaaxayhS7PyX6zX1N1RnEkySLTQN9LZ29FqInE7DVs/WLU4FTbdZbUK X-Received: by 2002:a62:b615:: with SMTP id j21mr14495213pff.190.1564033191861; Wed, 24 Jul 2019 22:39:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564033191; cv=none; d=google.com; s=arc-20160816; b=0zMetfMIzo+nJv03g+JyvNiYZFdrw4uu2rL6tFuIOvud3pzaBHIFdxgsI4T1vpmrPw 3Q36LP/b35qUV9EMQW/ERSXno62bDR7koQWy9ofxEpNZHT+5rXeEpxFhhdCor1FmL17m ubhHbWruAMOWDxAIKkFaQWKY/Q4GopwyjyIuWBIy/iaS5aLLw2OIUrCIpKPVVHghooil TAA4ebWKi2NkohpzFXv7HmdpKY3TcqAgLEe/cIBcEDe3NieLcI5LURDaFbxOOb2Kqhgs cOR14hX8mpLpjjQ7bigCUesiDP8GjlklNWmQVN5uBsiBJHlLi33nMLnoyByOkABFMmK7 uaVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=XF4rJ3BsX1LfxGLu5gykNrbkZn8GtHjvizmrcJZg+M0=; b=aTcGwoccI5gKSCyewRY75+CZ7q2zHvJkUM27yR5QhKu20N0UaGtWn9w98nLEK+3371 YoUxh+lUCRQbwGqcIJVHcHEp0J9zOb+udkAUk/WJDVLYIS53GGBpG7wglG39kG2bCLY5 bWGq8DmNAJ99qmY40Nm0ZnE5R4kZURSj3TQc8Pb8uVw7Me2lbAIso+hd+m4Ql9bx1VTz V7ZIEZ3AjMZ+w7IOLJLeXykdvuxJhqBsNcigBTLM2uijz9c9bxv8sHR0NlfMObEahJqv S/VNm9wnU4P43HkLgRC9ADUW4MB5bYIiLeh3YZPIkQLuoCtJY3L9qySl2GrSWoN1hh6Q wcyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=aqmQVtft; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r33si21610111pgm.371.2019.07.24.22.39.36; Wed, 24 Jul 2019 22:39:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=aqmQVtft; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388287AbfGXUAd (ORCPT + 99 others); Wed, 24 Jul 2019 16:00:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:48548 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405236AbfGXUA2 (ORCPT ); Wed, 24 Jul 2019 16:00:28 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id D484020665; Wed, 24 Jul 2019 20:00:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1563998427; bh=mpHAlu1g6ATP9dASfPwGMVpV6BfbTPl75zysN1qbgMI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aqmQVtfteCsDixdNnLVljoM9z2TaKaNUFxKN965XSWfMILgL12shKsiW+q34JReoO bt/dKOXKKE7OKqzLOjZfx7DRAoeTClzWCdBbMa4u9Wy2CoKvaThLvybDxXbtxegaGv Swxib/FuWNE/VrC2dRTdKLEqr8Mtfg0kWyWtyXl8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Szymon Janc , Maarten Fonville , Marcel Holtmann Subject: [PATCH 5.1 361/371] Bluetooth: Add SMP workaround Microsoft Surface Precision Mouse bug Date: Wed, 24 Jul 2019 21:21:53 +0200 Message-Id: <20190724191751.280164932@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190724191724.382593077@linuxfoundation.org> References: <20190724191724.382593077@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Szymon Janc commit 1d87b88ba26eabd4745e158ecfd87c93a9b51dc2 upstream. Microsoft Surface Precision Mouse provides bogus identity address when pairing. It connects with Static Random address but provides Public Address in SMP Identity Address Information PDU. Address has same value but type is different. Workaround this by dropping IRK if ID address discrepancy is detected. > HCI Event: LE Meta Event (0x3e) plen 19 LE Connection Complete (0x01) Status: Success (0x00) Handle: 75 Role: Master (0x00) Peer address type: Random (0x01) Peer address: E0:52:33:93:3B:21 (Static) Connection interval: 50.00 msec (0x0028) Connection latency: 0 (0x0000) Supervision timeout: 420 msec (0x002a) Master clock accuracy: 0x00 .... > ACL Data RX: Handle 75 flags 0x02 dlen 12 SMP: Identity Address Information (0x09) len 7 Address type: Public (0x00) Address: E0:52:33:93:3B:21 Signed-off-by: Szymon Janc Tested-by: Maarten Fonville Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199461 Cc: stable@vger.kernel.org Signed-off-by: Marcel Holtmann Signed-off-by: Greg Kroah-Hartman --- net/bluetooth/smp.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c @@ -2580,6 +2580,19 @@ static int smp_cmd_ident_addr_info(struc goto distribute; } + /* Drop IRK if peer is using identity address during pairing but is + * providing different address as identity information. + * + * Microsoft Surface Precision Mouse is known to have this bug. + */ + if (hci_is_identity_address(&hcon->dst, hcon->dst_type) && + (bacmp(&info->bdaddr, &hcon->dst) || + info->addr_type != hcon->dst_type)) { + bt_dev_err(hcon->hdev, + "ignoring IRK with invalid identity address"); + goto distribute; + } + bacpy(&smp->id_addr, &info->bdaddr); smp->id_addr_type = info->addr_type;