Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp3210304pxb; Wed, 13 Oct 2021 01:01:14 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw2bxIu3P3hA3koGjArLp2+tEfh9jDT2tRwHFDPp10+E51zmgRzImnvEgVDMOlKAC4Gh38G X-Received: by 2002:a05:6402:5186:: with SMTP id q6mr7451876edd.340.1634112073789; Wed, 13 Oct 2021 01:01:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634112073; cv=none; d=google.com; s=arc-20160816; b=bg7cL47vhxO4cEYysVeq3HUo6gr6qEXH29yj4NRA1o6K6SMeTZiqRuaj9tJXYpavY7 e6FKesIFFJIokRk+OCjLErBtnH6Fm7m3CkDb3ytx2NM+k/Xp5yacOMc36rwrhT6rVJv4 0oHWHMFguNSjHhFWl0GaqSA1pdDENq5KOPre6BAcwcYr/6E7Fs98DLwmYuqqqmI+lEJC JqcbkswXf9TF4M16sujCWlTariUc9hESwBi+90GQ8BgphguciSaYY0EX7U1ZBu6xw293 41UoVL46HxJOVw1L/729Y5fJ4U++276t4LZUTXvSGYa+lOCDN3CQghTnmx0IG1vNQPoK XsGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from; bh=YH69jgsfLCDFX0V2BPKiAAfwAJvQW+0f2tHxcV/GcJM=; b=mJOrqFDQ6GDwzNpybFV+qPaIJizCo/l4uOFmjOtONmcDZbqTezzE3cHME5KliFCKoQ 25y5M1gOfASwJyFYYCZuU79Hsy7hw8si2Ps30hTwIw6LYCk+fm8aJF3RFOC/8VW9lisa TeYG8QoPvAbCvWTw8Iau2zRsjaRQg2Zlk/EPNXps3aQPtOqubsvds1VbaOWRP5/GWCdM V8L/sjhHMK/Nqu5p3POs9eX9X7DnWVcLef21AYpg6jCdFHuPDopJC/BKNJOGzuLlLubZ e1qi6lS/rzCoCC9NTlo8NzSqXkuU+pSCT6tYgs9A3+OqfGcOovOrBWg6KffW63N/ISzr jyPw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f10si9323529ejt.242.2021.10.13.01.00.39; Wed, 13 Oct 2021 01:01:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232769AbhJMIBq (ORCPT + 99 others); Wed, 13 Oct 2021 04:01:46 -0400 Received: from mga05.intel.com ([192.55.52.43]:47469 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232711AbhJMIBp (ORCPT ); Wed, 13 Oct 2021 04:01:45 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10135"; a="313574441" X-IronPort-AV: E=Sophos;i="5.85,370,1624345200"; d="scan'208";a="313574441" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Oct 2021 00:59:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,370,1624345200"; d="scan'208";a="547748254" Received: from intel-lenovo-legion-y540-15irh-pg0.iind.intel.com ([10.224.186.95]) by fmsmga004.fm.intel.com with ESMTP; 13 Oct 2021 00:59:41 -0700 From: Kiran K To: linux-bluetooth@vger.kernel.org Cc: ravishankar.srivatsa@intel.com, chethan.tumkur.narayan@intel.com, tedd.an@intel.com, luiz.von.dentz@intel.com, Kiran K Subject: [PATCH v2] Bluetooth: btintel: Fix bdaddress comparison with garbage value Date: Wed, 13 Oct 2021 13:35:11 +0530 Message-Id: <20211013080511.23945-1-kiran.k@intel.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Intel Read Verision(TLV) data is parsed into a local structure variable and it contains a field for bd address. Bd address is returned only in bootloader mode and hence bd address in TLV structure needs to be validated only if controller is present in boot loader mode. Signed-off-by: Kiran K Reviewed-by: Tedd Ho-Jeong An --- Notes: changes in v2: - Add comment for memsetting ver_tlv drivers/bluetooth/btintel.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/bluetooth/btintel.c b/drivers/bluetooth/btintel.c index 9359bff47296..8f9109b40961 100644 --- a/drivers/bluetooth/btintel.c +++ b/drivers/bluetooth/btintel.c @@ -2081,14 +2081,16 @@ static int btintel_prepare_fw_download_tlv(struct hci_dev *hdev, if (ver->img_type == 0x03) { btintel_clear_flag(hdev, INTEL_BOOTLOADER); btintel_check_bdaddr(hdev); - } - - /* If the OTP has no valid Bluetooth device address, then there will - * also be no valid address for the operational firmware. - */ - if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) { - bt_dev_info(hdev, "No device address configured"); - set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks); + } else { + /* + * Check for valid bd address in boot loader mode. Device + * will be marked as unconfigured if empty bd address is + * found. + */ + if (!bacmp(&ver->otp_bd_addr, BDADDR_ANY)) { + bt_dev_info(hdev, "No device address configured"); + set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks); + } } btintel_get_fw_name_tlv(ver, fwname, sizeof(fwname), "sfi"); @@ -2466,6 +2468,10 @@ static int btintel_setup_combined(struct hci_dev *hdev) goto exit_error; } + /* memset ver_tlv to start with clean state as few fields are exclusive + * to bootloader mode and are not populated in operational mode + */ + memset(&ver_tlv, 0, sizeof(ver_tlv)); /* For TLV type device, parse the tlv data */ err = btintel_parse_version_tlv(hdev, &ver_tlv, skb); if (err) { -- 2.17.1