From patchwork Wed Mar 26 19:31:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 876361 Received: from mail-ua1-f48.google.com (mail-ua1-f48.google.com [209.85.222.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5B53A28F4 for ; Wed, 26 Mar 2025 19:31:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017501; cv=none; b=CRIqqCrli4qryXHJGQ7ZGp+4vTSP5OqEseZOMCLN7fg2H45RAfQJGv9xv8SPWuhFCTokR298hc0MkJwoF/Wt2mSFWCQ4p2APmF3EET+iwqTyB5mYy8AzeU04qyjxSdHYkW5Z2Dx1hC9xPhiKa+fTg/MWdgM0AgrViU4eoczN/f8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017501; c=relaxed/simple; bh=B0hXhuZwdHD//seEzyiifPU5lNUM0FOQm2zqSUMkNmc=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=kojQUj3AA2rg2/hWzzGLjbEpDKwzlbxA9qxiAyHnp2kUjExmo7JIdSBZkKE1Gm2+h0y3Ls91sIZ1NNpChHJoRPWO06JtK3YzlbW91FJHYaqqsb1ohMt1aOI6YyhniOafgv5JT3CnloCcGSO6ic91dE8LM4XaD46cx7t6fdrfHY4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OSnKodnE; arc=none smtp.client-ip=209.85.222.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OSnKodnE" Received: by mail-ua1-f48.google.com with SMTP id a1e0cc1a2514c-86d3ac0fec0so174932241.1 for ; Wed, 26 Mar 2025 12:31:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743017498; x=1743622298; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=PbG5/qn6Aaovj4UrxoQyYlxlm2FwRE29diAU15cDfJ8=; b=OSnKodnEZt8PPCHvrriaViliwrBx/risEHH2HWzbbh+CCBVW27G4z9alQQ1J6gnBQI Wf7e5wz2nJ+TAMAROTlncuDSt3b+mUMonVI64zNw7LADPhOEY86oBXvFOQFGoF+f40FJ zIH6AKd0PWguG1zSYp9vdHHk+x/Fnnuuvc5BorQtXPWsmJ9krwZyLqQt4TF0f+CaNoOS kqXDEicXyPktWE5x4dXe0MT5uLsn6obUa6rrUBJgTg1xLSqR66FFjsMj6QBSDPgIVf/o 6Vzdy65FFjHOGFQkJniYX9W/ScfAZmB37OQ/UptUWlFrLC3NAPScs9MdmlXZkE7RB8oB l1jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743017498; x=1743622298; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=PbG5/qn6Aaovj4UrxoQyYlxlm2FwRE29diAU15cDfJ8=; b=ZOfyjAK6YHFGArnjrNfUCLwmNka33ZBZJtiSeLkBo+8gTytzHjFVptwZ4XI2RTWAmf qfnH0jCOIbsrUfq2aNcBiUkUh6ff6s8SaQrYcDYCIdbXARYuO/xJRYd+Y+tsxV5v8dz3 IiADYzfZS2HJK6mTBQ39qr2ctxEOh4F0dzxr4AL/hCW/9zHBCb+rrPLsW69s5D3UZ8Ae gz4vIK+ousxKuJiHFuSou4vTMoUxG2qQ/MX+PvcF1I6mMo3HgogBDGAnRdVtiC4lIbgC SrhDBftGwraNS1IIfql/YK0kAvHAEj3bkL9Qap7DI1oGYk9sGN3YBAacMgv1/mykq+YG gR1Q== X-Gm-Message-State: AOJu0YzC3uxbvuz1zoruMwG6uUkrxjHC44orvBfX7DCRXMO9MsqCBanv GPLH1EpbwgUX+5Vb8i/YBxOgOwtO9daK6Zg7lCnIIR9AGsaDvRxbfyyKoQOGt4Q= X-Gm-Gg: ASbGncu9AlmC4l2wPPQsyKQcvqgPSE4YinfA1v0iGLVyKRrispqkES4FZneN1VkuRsh KP6KtQcyB99KDzXuIUXGx51+Qn2urJPGlmyDLZ0+eOwykgT1j3Nw4IijIiBiVz2ZbzA+lnfMIu7 Vd/2oQXsZxKT+L2qe2wK1Jz18DwUuDPmfa6qo9HRNDSshwySokUps33rnSF4uCUTSVtxCZPdA6D Wv0xxphz5O/QvlGti4R8h9mvrtLo5gi5viQ6BPBMtVjQhTlQO7GjZyGsRarbBOHn+uCgD93jvBu cdcBeQQqobpFwkZnm5DIoFTgoeGN8csxmgcxf4jPWolZMDT2NfsN8K2DN9aBohXP6q+0wyEAlFD AMWXhFWYt17yEeA== X-Google-Smtp-Source: AGHT+IFRbHfM7KE85nGlXnIitiSS1sWRimH0WkGKr1aohsEuVIgEGX43PCv5qJ2spHHK/ObrDNcTFw== X-Received: by 2002:a05:6102:3f03:b0:4c1:8ebb:400e with SMTP id ada2fe7eead31-4c586f55074mr1532847137.8.1743017498281; Wed, 26 Mar 2025 12:31:38 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4c50bd75e84sm2497804137.20.2025.03.26.12.31.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Mar 2025 12:31:36 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 1/5] device: Attempt to elevate security on Pair while connected Date: Wed, 26 Mar 2025 15:31:29 -0400 Message-ID: <20250326193133.2718934-1-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.48.1 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz This would make Pair act behave the same as when the device reconnect and bonding already exists. --- src/device.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/device.c b/src/device.c index 9774b5bf1b96..f76c1ec3eabf 100644 --- a/src/device.c +++ b/src/device.c @@ -3194,10 +3194,13 @@ static DBusMessage *pair_device(DBusConnection *conn, DBusMessage *msg, if (!state->connected && btd_le_connect_before_pairing()) err = device_connect_le(device); - else + else if (!state->connected || !bt_att_set_security(device->att, + BT_ATT_SECURITY_MEDIUM)) err = adapter_create_bonding(adapter, &device->bdaddr, device->bdaddr_type, io_cap); + else + err = 0; } else { err = adapter_create_bonding(adapter, &device->bdaddr, BDADDR_BREDR, io_cap); From patchwork Wed Mar 26 19:31:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 876973 Received: from mail-ua1-f54.google.com (mail-ua1-f54.google.com [209.85.222.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 145B318DB19 for ; Wed, 26 Mar 2025 19:31:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017506; cv=none; b=qOFv5ISubqbOUqx8px8KAI2HWKXaIOG6GUbmqnmAaMn5b2V3WiTku0rvKVuL6tn6QL7pVCL6rQFXkquK9dR9rRQX5duwHmomwPj3sPWzz6UyVf5gm9kT+O/OX+a/Qk6X/md7l5Xpm97wVUjp/WRmpQ9EwLaUB3DFJSz7jLOJyp4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017506; c=relaxed/simple; bh=TzE4sWl67jzUR5nMTFd7OnUN0ibDp+vZF27lcsfobaM=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Qb0eSz5SDRglWbbMd4095jzleqDdaXItNqC3Sot/YNHUYL35BikI8U2gcyWqErlpd9QuWLvabSR6e8GG/BxPEuoSOYB0kw59+uLiE6ItGjK2NJOkNqIkVk/6sT2Ah6t0U/9Of5oTe6jp22NNkkVssAj1KK6gZ315FOGnvSj6xz8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=V983NCJO; arc=none smtp.client-ip=209.85.222.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="V983NCJO" Received: by mail-ua1-f54.google.com with SMTP id a1e0cc1a2514c-86d6fd581f4so1144834241.1 for ; Wed, 26 Mar 2025 12:31:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743017502; x=1743622302; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=T3SRuHLKAOKf7El2v2wYycMLbTwvDLlYXfZbdRUo32U=; b=V983NCJOGV0woxkfbVtsJF0N+TzKnNvBuWYSmWWDWyOg4kB+rJaZeRPhaj3Paxzk/w sV2HlloKNv3/5yg+lOfX5ygGbJ7AW6qnG2uJhFRRqDsqevXK/Mie1tRovVpz9siSXh06 0062lnH2tMJOK06uyH/9eh3hPg9WUbP0j4tQP0/ykfwBWJ4zrkhRjSnDe6kx6Gs0PTrX A3pTQhm5u/HwsCVNc/aWegIGrQWiTdKdw3fCMygxLQeja6IEqnrm2go3g1buDubmJqsv yVs/zB1JDN0eS0/1JEVhZIkXvlfC7vE7UCoHU4uoOqpNiC9ItjHyPS8eAaL+5SFg46NG vskA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743017502; x=1743622302; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T3SRuHLKAOKf7El2v2wYycMLbTwvDLlYXfZbdRUo32U=; b=wQ7UTPCVsDlNJDEPg535coYU3yZ9gW17rMg2N9woHTXkhAY4Yv5v1pkItLdFnXCxY4 tu2iqnCnv51For4nOmzQizB/XlAcIV4OS1AeMZy2V8paWhz3BgJrWVr9qNKfE96HjQl3 B3fGtvoXSP5rB+GjFwk7ZNzNV6wL7i865EmJ05fO/sbkD3RnE/Gbt7NWOzFjl2QlKR2q U7mVQzzGameDyIqu+7gPWolNKS3p0I+CFI5bssTAY+348fodn5v7fUhJ8Kb7tA9xL9Ls ea94sBhw8pyB6q5mZqvyUwaQWPL2Exw0VWMjrDYflgL9bN62xtgG2aKbc6sPoPNZHLuw nqcw== X-Gm-Message-State: AOJu0YwY2YY4gsyDgzXQeE+FnwEgM67ABFmEQMSWA5nqTiE6u+GUqQzI 5k/hGBOVyefRQZLUBvtIdovjl90ugwcZeyEMHfbdIOjDI9eh0UKRBOTmDofU1Ts= X-Gm-Gg: ASbGncugPPUaI0ah0+TKsn2PtcKoStyhtb3RQJKMI2orqqX1tlu5iBnJeilJV60N8tm KI7u2tenK48+Uv3QhelUbY6D/hu1++zA5bFeilteKuh+XBQCu0Wtm42s7i4XuR2NaaGRHuJOkjq yVfiqr9H1n6/bY7M/sJB2e4EdnEYGp9QVg/1TZDu1tvuSzT7u5C0LKMxXWbHyBiQN/K3Dz9kTkx rMQAS9yYxpp1TdcGoLPK0dDrnUL19vxQWzJMhocl5WPOtEJi3i8Tzm/MhzKEjpUoWoBdo360YT4 xEpgUA9mehjWCaOWc4gi6wKgbcI0zrKe1lCB+aOnABg0QTs2oiWhuosQ/fp0VwYBImrhU9ICVX4 hPsPlBhZEH6PZrg== X-Google-Smtp-Source: AGHT+IE9AQ3feGdl4+9BaeOVtY209vT1mEa1NymI1ViHEcOmnukaOjkysTX8ejSCMIj/Y9HHRNLcXw== X-Received: by 2002:a05:6102:2b92:b0:4b3:fee3:2820 with SMTP id ada2fe7eead31-4c587072560mr1161717137.9.1743017502077; Wed, 26 Mar 2025 12:31:42 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4c50bd75e84sm2497804137.20.2025.03.26.12.31.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Mar 2025 12:31:40 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 2/5] device: Make Connect and Pair mutually exclusive Date: Wed, 26 Mar 2025 15:31:30 -0400 Message-ID: <20250326193133.2718934-2-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250326193133.2718934-1-luiz.dentz@gmail.com> References: <20250326193133.2718934-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz This makes Device.Connect and Device.Pair methods mutually exclusive so they cannot happen in parallel, so just as Connect:Connect and Pair:Pair combinations the Connect:Pair and Pair:Connect will now return org.bluez.Error.InProgress. --- src/device.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/device.c b/src/device.c index f76c1ec3eabf..6a6c379fcbbf 100644 --- a/src/device.c +++ b/src/device.c @@ -2629,6 +2629,9 @@ static DBusMessage *dev_connect(DBusConnection *conn, DBusMessage *msg, struct btd_device *dev = user_data; uint8_t bdaddr_type; + if (dev->bonding) + return btd_error_in_progress(msg); + if (dev->bredr_state.connected) { /* * Check if services have been resolved and there is at least @@ -2648,6 +2651,9 @@ static DBusMessage *dev_connect(DBusConnection *conn, DBusMessage *msg, if (bdaddr_type != BDADDR_BREDR) { int err; + if (dev->connect) + return btd_error_in_progress(msg); + if (dev->le_state.connected) return dbus_message_new_method_return(msg); @@ -3133,7 +3139,7 @@ static DBusMessage *pair_device(DBusConnection *conn, DBusMessage *msg, if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_INVALID)) return btd_error_invalid_args(msg); - if (device->bonding) + if (device->bonding || device->connect) return btd_error_in_progress(msg); /* Only use this selection algorithms when device is combo From patchwork Wed Mar 26 19:31:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 876360 Received: from mail-ua1-f53.google.com (mail-ua1-f53.google.com [209.85.222.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 588AA254841 for ; Wed, 26 Mar 2025 19:31:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017508; cv=none; b=jnxU+vfNDAIYmpEFfHBO5aALwLd5UtFHNdMTlAFlh+1KFli2k7W1EpVbNDQC2tfnvIO6pL75gn0woncr3jYcDEtz3x8K7ZYr0ThC//1HinsHv7rbKH1VVCRRy/1SB11C5POCb7tO/SGYDgZqepRKXj9vKRUhiDxaLwB7BjeOqxA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017508; c=relaxed/simple; bh=nb8o1+pwYN6p6PByhy8ZCrDYm6br8C1OtwXvmjyWa64=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=A7Y0eKJFdsY+HiLbOwin03IcS0NJKze4uEx4hoNYkeiL4/8Ef7plYsqdtcCr+eazo2KlEBMgR7Nf0pRbZ+YzpqiW2p6HUfKWw6Qek/2yy+dlE+bgT9PcXHaexXR+rZz8kDt4Om2LrDrhwqSPhxhmkUkV6rK2yZQ1A2z2M9zD6W4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ILSACgWQ; arc=none smtp.client-ip=209.85.222.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ILSACgWQ" Received: by mail-ua1-f53.google.com with SMTP id a1e0cc1a2514c-86d6fd581f4so1144863241.1 for ; Wed, 26 Mar 2025 12:31:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743017505; x=1743622305; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=KtPK5mnFg/e6V37aqsMHx4SftU4CbHjXD29JzxP223o=; b=ILSACgWQI68a2wTyI0mqj9a1RkqESvz3ChcjPS652zQa/pJSb9uMmrYJ9jPbec/4pS UgV8vihlLaSiW323gudpSAZLuvWOBJz9n2IlnyjrB69/JenulzVJRl3/ofngpM/Xj71J Jez5jv05qcLp1rJEvaXwDF8w6YcKsq1obzx/MHyzsdxKcjUo2BPmqzgVWUXB+R6cYG1Y PVSGvSLiBM5y53XIcToYTGvGtyBvciGvNmMW+PKhZgrQtgpMbL0SC8jj8ZU5fxkiOmIs gA6Jbw+U39/nlvT8diV/vNE6T0LJeP26kNl/DWxqwT4HNZMvlUu25ytlZtcf6H2Q+ozz ZfOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743017505; x=1743622305; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KtPK5mnFg/e6V37aqsMHx4SftU4CbHjXD29JzxP223o=; b=vq1rKboB+p8jzt/2FewrKV5j/obiP2M50HjgQIH3GyhuDip8o5425i1o4GIPHjiHnV WzOX7UOYH7p4VNHrtOlU9ZZMO47XiPGlGtxQpC7EceunE7taGrDdpVjOD0XuvE0nOvtl Lr/iL94IkjqpVF5m5JIAUBDVsMQ3w1aKEsHzgc2Hyua8F+MdJwXzWoNSTo0BnHkAsTEJ Z0dOMEjKC5SsPU0Cnje72zB/qEZtsVsD1wpOPmxC0lxgUt+9+9ca6LJkbNH8uLDSd3kU MyiPQo5TxdYN2HW/DFu1mTCQNiCxQvxONk27zPGghmDtyU2MP27db7oRq8VutyEcRFcR 9eww== X-Gm-Message-State: AOJu0Yw214oN4f0yUaAUQ2gAh0J76PuPCsrlW9EcRozVVPMo0cKEcerd 6zwE7dpi/tpREyaK6aie3O+wIQq7EJ+V/LdBAk7mfweA8CRVSDiFzH//6cQPP5Q= X-Gm-Gg: ASbGncsEUiNU3VZyO2AdVys0OgZRi7DF4IIb9FNZuQUYlz+d37KzVrflS//76Svy+aD wrgVEKa3JicKOFnbQXqcZgvm4C2gczBh4OQc0G3zgrqUdbDS0Rg5NaHiFoq3fZGyWeK7krizbcC e/bCxuRQY7AmDbSy8ohJpiL/I7sVXIdeQK9F8TbdYK/BFFKfx6p/wrR/aAKE806k50vgfwEk0JT +dPmogKmff9kHwdbuCioNU/4ed/+wpXUqRqqu/Vq20E051enCyJsXT6SaZ/EdsINi5AQcotOHQd 8nlcLHF1eFnyytIMsMdNKxbWZJW5ZQPE58Aq/f4ZpkvB7xV5RL/YdRbd1beSyj3OsAwIZQ5O3kx CyulYNcY1bYYXUw== X-Google-Smtp-Source: AGHT+IHpgl/BNO4mv52eToQEgnBhRS+/uivZJ2YCCGSu1FzAtbKPYT9pBqxJCJw8Axwzfx3I35Knzw== X-Received: by 2002:a67:e7c2:0:b0:4bd:39c7:804d with SMTP id ada2fe7eead31-4c586c813f5mr1279492137.0.1743017505356; Wed, 26 Mar 2025 12:31:45 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4c50bd75e84sm2497804137.20.2025.03.26.12.31.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Mar 2025 12:31:43 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 3/5] device: Use btd_device_is_initiator instead of Connect message Date: Wed, 26 Mar 2025 15:31:31 -0400 Message-ID: <20250326193133.2718934-3-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250326193133.2718934-1-luiz.dentz@gmail.com> References: <20250326193133.2718934-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Device.Connect message is not the only way to initiate a connection as there is also the likes of Device.Pair which will initiate bonding, so this incorporate the bonding check into btd_device_is_initiator and replaces the checks of were Connect message was used to determine if initiator to use btd_device_is_initiator. --- src/device.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/device.c b/src/device.c index 6a6c379fcbbf..034491b59d30 100644 --- a/src/device.c +++ b/src/device.c @@ -320,6 +320,8 @@ bool btd_device_is_initiator(struct btd_device *dev) return dev->le_state.initiator; else if (dev->bredr_state.connected) return dev->bredr_state.initiator; + else if (dev->bonding) + return true; return dev->att_io ? true : false; } @@ -5780,11 +5782,12 @@ static void gatt_client_init(struct btd_device *device) gatt_client_cleanup(device); - if (!device->connect && !btd_opts.reverse_discovery) { + if (!btd_device_is_initiator(device) && !btd_opts.reverse_discovery) { DBG("Reverse service discovery disabled: skipping GATT client"); return; } - if (!device->connect && !btd_opts.gatt_client) { + + if (!btd_device_is_initiator(device) && !btd_opts.gatt_client) { DBG("GATT client disabled: skipping GATT client"); return; } @@ -5834,7 +5837,7 @@ static void gatt_client_init(struct btd_device *device) * it shall be triggered only when ready to avoid possible clashes where * both sides attempt to connection at same time. */ - if (device->connect) + if (btd_device_is_initiator(device)) btd_gatt_client_eatt_connect(device->client_dbus); } From patchwork Wed Mar 26 19:31:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 876972 Received: from mail-ua1-f53.google.com (mail-ua1-f53.google.com [209.85.222.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C718818DB19 for ; Wed, 26 Mar 2025 19:31:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017514; cv=none; b=ZW6461emqQXKL9eT+zDUnEYcCFrm4iqiWVEiR3G5DNqbhH4DQO3us3RmlHoGrcWRy67rLCuliSa2QsEWsJefUHhJAyB9D6eHQaxGMykcS2NAtmgcaclTre0oK7MfLtqd0ErHnnMphJ2hB62VAydk76bE7HQjitVqT/XI7XtX4lA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017514; c=relaxed/simple; bh=0kAz14LJeBzujGmsf5ftu+pOZ9J8TTK6EMSZWmrZ+1g=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hio0ljODLiYpFl0apUzYsr5Ltk05YFS6C42U37aDaDPUjavtzNvslB8eHKBRmkSEUJkTw8Nfglyabr6QkT8Ncwj5nYElOt4QgbOPPKFyVY6Wdv5GNgBCjhZHRUJBhudhf9nsFdl5dfk5Ce1FfDV50pXcU64MoVqwGOeH6jFlhuQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hP3nXNkP; arc=none smtp.client-ip=209.85.222.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hP3nXNkP" Received: by mail-ua1-f53.google.com with SMTP id a1e0cc1a2514c-86fbb48fc7fso82620241.2 for ; Wed, 26 Mar 2025 12:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743017511; x=1743622311; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=qUFzjok7KDF0U/68DXlWp0PHaQBteZtCHRinspvqPZs=; b=hP3nXNkPYbaYsbX0XQfs83DG30e18M78xXT14nA92lMlFIT+IKRdA5tHZugbpt66mr GFtbjsTw0hqSqlF6S4jTMED43D6v9DN74+VepYlW3Oq5d7htZAM2vgpuO7xCecHCl96K 3v3vRb2j7osBM0EUJNQpTD5Knj0VZmvX1SiDMG6FmABSZaLX6hpODvCqLZzCS7M9F8WE JXbU2krfS+rXYJ/l100+sQTzBa5oQb3GsN31WScbpF1qrg4gidbaf0wgzUKZUsBpqDFe KnRSchire7aRKGjSojxXAvwFByzlo5vURVnRX7LuUwfqI1aPIfuRuJuSMcNXN35vOBWy Ml4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743017511; x=1743622311; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qUFzjok7KDF0U/68DXlWp0PHaQBteZtCHRinspvqPZs=; b=WDl5buIEa06jZJ4B6Ds27XDZnRfbRtigLXRXJQ0HlmffBOKDqMIFBu20CC6RxiHz5e xzKC1StNNZxJJ5685qtXfbw1F1Q8sxmvGtI/bEme+1In90uSY/ghfOmHK5PXIDjYgtwF nwuKVyXMB2bBxtVEkVCZ8Ucfd7/t2DlKoIHCDJ1GCO9OdEZ6iyv6NeHdYND64TJyehr7 lFFurWWCQBuTkBFGOEJd6C68Bvm5tAGrIAFFLfMv3tJ5qvkB6xwZ+ix3K4/a0Ml4HBr2 v80vwbP+NUJCv9nFXRpguw63Ne3aRvnLC3uKL3XNeqDcWbmF1E6IGhIihf6Zv1W/8sz1 K6sw== X-Gm-Message-State: AOJu0YwcDcCdBkAw6vVSXixLkp2Rq+CeJSLb77nyPUcaOnWxQGGNhGDX 1glG0Te4UW/p7ID4Ozla9hy4jGIW4LupIVndE4j20TwY5bPG4iX85CC5GN3uG2Y= X-Gm-Gg: ASbGnctsnl4yH9ZpCwxZmiPCYWF4W1hG1ok9gPFWdE9N9liVgT1n7Z2wG2FBoQvHrA2 PDSUN5yLhg90PtlzRv9BU3/KAf2HSF0DYNN3esbA9tDBg+haJcQzLRlR5c4pbE7VBbuHB0JJAoX Z4V1+Ankj4Hp8XoGpjPBjCMtN9JzfApf3HTLwYFAoNqVv4AWGDraKhV8OLQLXkmpRsxmdKqalOQ 1FJ/C9LHNdWL2WIyTlcSgD9MBzrRHBaBgKa/qqQj007ovS7d0AzINV4ZXDYwY5I+/Yq8Bq+0kbU 4RbwXmaaYvfamMn9IcPGmS+NAnH84bKM6hfA5Hf2WKvBS9DaaQmH8soMIIgf1JY7NogFUFqUTmo +a6vY9U7YCRiF3Q== X-Google-Smtp-Source: AGHT+IFp9sQ1O1Xp2dLCKaavs2hu3htqG1YN9GpJQQ4Goh4wOf920e7bF/mz3S7j9V2wFfuBpKvd8A== X-Received: by 2002:a05:6102:3e08:b0:4c1:8928:cefb with SMTP id ada2fe7eead31-4c586fa84cbmr1680904137.12.1743017509221; Wed, 26 Mar 2025 12:31:49 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4c50bd75e84sm2497804137.20.2025.03.26.12.31.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Mar 2025 12:31:47 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 4/5] shared/att: Make bt_att_set_security never downgrade security level Date: Wed, 26 Mar 2025 15:31:32 -0400 Message-ID: <20250326193133.2718934-4-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250326193133.2718934-1-luiz.dentz@gmail.com> References: <20250326193133.2718934-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz Requesting a lower security level than existing one shall result in no operation since higher security satisfy a lower one and it is never a good practice to allow downgrading security to begin with. --- src/shared/att.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/shared/att.c b/src/shared/att.c index dabbdb4315eb..8657cb6423fb 100644 --- a/src/shared/att.c +++ b/src/shared/att.c @@ -727,7 +727,11 @@ static bool bt_att_chan_set_security(struct bt_att_chan *chan, int level) { struct bt_security sec; - if (level == bt_att_chan_get_security(chan)) + /* Check if security level has already been set, if the security level + * is higher it shall satisfy the request since we never want to + * downgrade security. + */ + if (level <= bt_att_chan_get_security(chan)) return true; if (chan->type == BT_ATT_LOCAL) { From patchwork Wed Mar 26 19:31:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luiz Augusto von Dentz X-Patchwork-Id: 876359 Received: from mail-vk1-f175.google.com (mail-vk1-f175.google.com [209.85.221.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 25F1C18DB19 for ; Wed, 26 Mar 2025 19:31:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017516; cv=none; b=C+g50L0GVLggD75PVIUjUG1ab6HIvLMNYi88cg/zgzM4PL2CHGZYYUhtZ3uk/ABV8mJbCfHFM6JcvNNTWSRKV7FdudMbR/9S+3mlKbWCIvCuUTAIPgb4Yxh2nP1iWHNXubAz2qhNmVNpC0pwPFWwFdH8XM2ggKUmDwzF3GimX8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743017516; c=relaxed/simple; bh=ZXY8byP9dQrVc5B5b2BRNnvuew3SQyUj4T1zCT9fjYA=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D6d+gAGofiNINE4pSaercKqKqzyJQrEk7+qI11+ZfFIu2XW45UjhaF+1mBXdRO3mYeo+BAF9n2p0nkYBPPdmfg8I9IpNFIr9QWlZ1Jyb4eHHOQAN2ipbIqXnGGNdKooX0XpdGxuY5DdAyMPWXj/9jW3e1qNkVajrtfCMJOr/NSo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=B4miZjDj; arc=none smtp.client-ip=209.85.221.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="B4miZjDj" Received: by mail-vk1-f175.google.com with SMTP id 71dfb90a1353d-5240764f7c1so103141e0c.2 for ; Wed, 26 Mar 2025 12:31:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743017513; x=1743622313; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=EycdN3E1BSZiORJ6XzALLnkt7w3brNrRMBKjtqd4mzs=; b=B4miZjDjbD7bwevH1dxaTi4yK+YVE6ATwIPSiJpNrj0SL31WDdcqhTWQT5YV/SixAH BRIezA7B6J7ldn6mIliik1583BGa+TAKfCASpyPF44JKVnpIjlUn1ZVhKy9WF0yxXJML wBi4Y8XqgyNmLzbuAafb6NKTLjG9f9y9rhYSDDiRgc9n8meRxeRHrZ35j2RShl4QXNEe J9F7jLz1dGtnZ2OjXUr9RFwlWGK8N+rOp+WjTxyOz1mRXne4nOXYu1GwdXQFpNje8KtP k5H/9iSHpAUFv4Lx8OwiRv4ZDxAhf3YCySe9C56YWcB2Oz8GZ+FQzTu7X2va7IVWWBpz wVzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743017513; x=1743622313; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EycdN3E1BSZiORJ6XzALLnkt7w3brNrRMBKjtqd4mzs=; b=ftHbCroWOD7bo6k4ltPkNwiNZCNLMK6iJBwDQgDjBBMjzyFPVbM9t8OmZRUOxKXJMv uFvX6evAp3bRPAglZFkNVCnlS5lNdLHGLugdSLwpMOXtrOEhjRc+NUuVtH8RIOInWDn5 QRZK79DaPfvtnpp6TkQcVNW7smTgfWy6rX/F8/IuLQfTHUrmzinzfVqnuRNpsY7DA0Dz iRL6Um+qymMk8rxfRR+3d1xNuNnJLjO28x73NsZ7D3OXet06TnMa/qXU0X1JgvR6fm3K Yt1CniPdlvPITSX3cv/y8Zx5Z7gAWidUimjflFY2toN+Q+MHO/vt3Yi5l2qFEsSBn/bg Itlw== X-Gm-Message-State: AOJu0YyN67tgHi5h70IMybR768AUyOyeFJAO4OXzVm9H4LfVvMl4u4Gm 0Zncz6+iYchn1ancVrIfY1GlJ4tnYRir7whmQQc26yZ3SjZReOE3AcRFZrodv4g= X-Gm-Gg: ASbGnct7uCBl4mdPFrnfglh9eo63+GMjVZizuuZ+qGYoQkPKpupIAfxL3STbEfv9HBM H5hIDSLw8oWCQ0Qxy+Y9v5ISqb4qBGJ3JbSfwbTeHuB8bdgqeMtKQ3bXs4AGgxO7a9Q/wDU9y6e mUljZlqtGq9Xgh74iDCjiGUNjS2OovW1UaUadMJ/D+GL+Opla+LMMSON00OdCm3xP6DJbpuuvYN uKOxswIx4dnvtFBhSWGna7sRRT0jS+rAENPsQj9okwZBEAJz8BtRqoEpPFNzghTZLKsbeqHzhNj TgVeqhki2x6MwClOvS2UaN4E4TKdxfhoqqcsPC7JMl4ykYGqZ6p9Qo/t4nikNOYaRTaA+mS89tl evspEeMIms/KCkA== X-Google-Smtp-Source: AGHT+IGYR8ND60QxsfmpxCzXgxQCtYNYjtcJ8a8i9kmkioJzuSks91yatnqYIc+nsUA1me80uvp2kg== X-Received: by 2002:a05:6102:2ad1:b0:4c1:9f48:617e with SMTP id ada2fe7eead31-4c5870b58a4mr1296327137.21.1743017513227; Wed, 26 Mar 2025 12:31:53 -0700 (PDT) Received: from lvondent-mobl5.. (syn-050-089-067-214.res.spectrum.com. [50.89.67.214]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-4c50bd75e84sm2497804137.20.2025.03.26.12.31.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Mar 2025 12:31:51 -0700 (PDT) From: Luiz Augusto von Dentz To: linux-bluetooth@vger.kernel.org Subject: [PATCH BlueZ v2 5/5] device: Elevate bt_att security if bonding is in progress Date: Wed, 26 Mar 2025 15:31:33 -0400 Message-ID: <20250326193133.2718934-5-luiz.dentz@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250326193133.2718934-1-luiz.dentz@gmail.com> References: <20250326193133.2718934-1-luiz.dentz@gmail.com> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Luiz Augusto von Dentz When bonding is in progress it means Device.Pair has been called thus the user indicated the intend to pair/bond from the start so the security of bt_att shall be set in order for it to wait until pairing process complete before attempting to proceed with GATT discovery and any other traffic. Fixes: https://github.com/bluez/bluez/issues/1125 --- src/device.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/device.c b/src/device.c index 034491b59d30..057d116be6fc 100644 --- a/src/device.c +++ b/src/device.c @@ -5797,6 +5797,11 @@ static void gatt_client_init(struct btd_device *device) if (btd_opts.gatt_channels > 1) features |= BT_GATT_CHRC_CLI_FEAT_EATT; + if (device->bonding) { + DBG("Elevating security level since bonding is in progress"); + bt_att_set_security(device->att, BT_ATT_SECURITY_MEDIUM); + } + device->client = bt_gatt_client_new(device->db, device->att, device->att_mtu, features); if (!device->client) {