Received: by 2002:a05:7412:37c9:b0:e2:908c:2ebd with SMTP id jz9csp1626623rdb; Wed, 20 Sep 2023 14:58:59 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFi4MjnruO/YXMDvNcnug9wYkflpSRJjKEygT2C+nPwpVSiw5sj5Smzzpe0+cAaoD3IXPbn X-Received: by 2002:a05:6a21:818a:b0:14c:4deb:3de2 with SMTP id pd10-20020a056a21818a00b0014c4deb3de2mr3624764pzb.46.1695247139162; Wed, 20 Sep 2023 14:58:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695247139; cv=none; d=google.com; s=arc-20160816; b=XgIfh3Io+zaZ5QZoer+qNAhfxfMuNVcOqrnmxcREDQorVRl4xqSW6OC4Zz6EcHC+on ZE+0jx3+JOzrZhQmnLtpAx5sJM2GfbSfJVlZqkOIEhCwBTL8MD5GHEK1ph/VCnzlnlKK 3ZYQ03G868uPAedBU/cCPctiLuVTrNgdzHOg+u40WfVAXHp7+FO6kN4hL28eFK9q7Ybd MPnNnC8OzeSfOwXGBe4ze9VCF5OQQQvtQ1nb6710o/ID1Ezgz/K4BIIWLF6vA01emwsE 4JGX8LQoNKoD6k27gurQDrkUUSPZFUC89fVXjNN9sVjrsgxboCIWYu6OBIg5vQIzwi11 w9tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=75R3CAT6QlBW4zu7W5P0EsSTTEapzv3VNfW7vaKod6Y=; fh=cDb+OBRfnjRhAYAfA7aQFYWAFNWpmB7foPz5Xhgj4Gc=; b=DdKTj9G8as8GA9n7aATpAYPaZ4MFk99BXSdyXrhP5DFDusS8n72uPiO7PVqauPwzb0 UUzEaW7GWTKTpAJFEA9d25DlmnuMRHZdIpQbRynEZ5U3ua3XdCUOBTlI6l3bGFhb7n8e qkoRH9Gzw0gahv5Sm/tGXSvd7aKbrRo6vN+AJNa6pn26/Dr8CfLtUhb+2USkdv1vv18s fE1Cgqy0vlpYhmQ6imIiK/Fgf0kjDpb3IcEqul9OZP6LrRbXx0Z044e+cvI8MODebOMi cq+/xXBkPuW7XoVw3V+d5p1E38jYJZVVeHXCW7h71WNknG90Jbss479/k/mC8EDIAetB lTzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=f8UT5Nn1; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id jf13-20020a170903268d00b001bb7b3e607dsi5409plb.21.2023.09.20.14.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 14:58:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=f8UT5Nn1; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 8A54D834C85E; Wed, 20 Sep 2023 11:44:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229473AbjITSoI (ORCPT + 99 others); Wed, 20 Sep 2023 14:44:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52074 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229461AbjITSoH (ORCPT ); Wed, 20 Sep 2023 14:44:07 -0400 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 66214CA for ; Wed, 20 Sep 2023 11:44:00 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-404732a0700so1771295e9.0 for ; Wed, 20 Sep 2023 11:44:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695235438; x=1695840238; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=75R3CAT6QlBW4zu7W5P0EsSTTEapzv3VNfW7vaKod6Y=; b=f8UT5Nn1Yc/QzSYFHh8S83nVTp3FX8Z63/l03Iuo1HStOtkl76DGeBM9oBKcS3Sjh0 twa65ZjFf5gtYW5kZuLFmgouMGa7hHI2A2WKW6KVqFQkiIaJmHO1uwrx2a6b8RJnkk+Z Q1Wud9DSliQLPdvbZXbOkRWBkOvMTyLH4vIz3kyihzrFEeObuKmRKqk3rchkeRETDJ2w mLprD97bx5cz55qZ0xGZJJBm3Zi5AzJ/UhHg5lw1d7nBs+zXs5wKo3tqGyVUqHe8IgFd zS+eq+xDlOIqjWjh0bo5MWUktXOU6VINsOnbxRQ4nUzmfskvhkDku+Iy14hm4CHarJl/ 1zrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695235438; x=1695840238; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=75R3CAT6QlBW4zu7W5P0EsSTTEapzv3VNfW7vaKod6Y=; b=MfoxGO8r2sqV7e6HhI02plgl6lgp15YLPmJRAkW3LsbuGAXIv/We8hbeJ4bTSADTWl 8HE734kr0na32zfnLvBS6X+STKRTgsWUWQGqoaKKTHx9QzstNHsdmDNDEWhYlpQMNfGs sv5DvtwOwySzXU8zlwVqt7jZ4/faKhV+NDSdWHx5yyM4kDTdE+oe/k+3PiEyhfZJNsyo N0bxEBWXkd4+0om3Tnd7zyY7l5iOGcr/q+1ByPsb4G44E/rcUfMCwIBCc+POkMqylqsu NxpzNjgRoEmiEQEeiM3f7rRmR/qhQTMGSlbpUm+pjRr9MsEHJbladNtY1u+brdfb6qGb judg== X-Gm-Message-State: AOJu0Yy4NRrJa3FEEx9lUsYbvuojdPa7Gck/Q9OqaPJ3DhMyNocgOJSI n8X3IheKQTyC6HblONRCe4f4spXmOd0= X-Received: by 2002:a7b:c4d3:0:b0:401:6800:703c with SMTP id g19-20020a7bc4d3000000b004016800703cmr3098221wmk.21.1695235438023; Wed, 20 Sep 2023 11:43:58 -0700 (PDT) Received: from localhost.localdomain (46.205.192.105.nat.ftth.dynamic.t-mobile.pl. [46.205.192.105]) by smtp.gmail.com with ESMTPSA id 15-20020a05600c020f00b00401d8810c8bsm2669643wmi.15.2023.09.20.11.43.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 11:43:57 -0700 (PDT) From: Arkadiusz Bokowy To: linux-bluetooth@vger.kernel.org Cc: Arkadiusz Bokowy Subject: [PATCH BlueZ] vhci: Check whether vhci open setup succeeded Date: Wed, 20 Sep 2023 20:43:13 +0200 Message-Id: <20230920184313.973822-1-arkadiusz.bokowy@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230920153008.967330-1-arkadiusz.bokowy@gmail.com> References: <20230920153008.967330-1-arkadiusz.bokowy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Wed, 20 Sep 2023 11:44:05 -0700 (PDT) Due to race condition in the vhci kernel driver, we might read not a vendor response packet, but a HCI reset command. This extra check will ensure that kernel driver behaves correctly. Otherwise, the HCI setup process will fail, because our controller will not respond to "missing" HCI reset command. In result the virtual HCI will be DOWN and without initialized Bluetooth address, e.g: > hciconfig hci2: Type: Primary Bus: Virtual BD Address: 00:AA:01:01:00:02 ACL MTU: 192:1 SCO MTU: 0:0 UP RUNNING RX bytes:0 acl:0 sco:0 events:66 errors:0 TX bytes:3086 acl:0 sco:0 commands:66 errors:0 hci1: Type: Primary Bus: Virtual BD Address: 00:00:00:00:00:00 ACL MTU: 0:0 SCO MTU: 0:0 DOWN RX bytes:0 acl:0 sco:0 events:0 errors:0 TX bytes:8 acl:0 sco:0 commands:1 errors:0 > dmesg [1754256.640122] Bluetooth: MGMT ver 1.22 [1754263.023806] Bluetooth: MGMT ver 1.22 [1754265.043775] Bluetooth: hci1: Opcode 0x c03 failed: -110 --- emulator/vhci.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/emulator/vhci.c b/emulator/vhci.c index 7b363009a..355ab6389 100644 --- a/emulator/vhci.c +++ b/emulator/vhci.c @@ -122,14 +122,16 @@ struct vhci *vhci_open(uint8_t type) break; } - if (write(fd, &req, sizeof(req)) < 0) { + if (write(fd, &req, sizeof(req)) != sizeof(req)) { close(fd); return NULL; } memset(&rsp, 0, sizeof(rsp)); - if (read(fd, &rsp, sizeof(rsp)) < 0) { + if (read(fd, &rsp, sizeof(rsp)) != sizeof(rsp) || + rsp.pkt_type != HCI_VENDOR_PKT || + rsp.opcode != req.opcode) { close(fd); return NULL; } -- 2.39.2