From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EFC5F476044; Tue, 21 Jul 2026 20:13:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784664787; cv=none; b=un65YSOhg/tsK4bh9xVxO/WYY/k/iLVTO0/pOfFu2n1cOW+Ae+0gQ/des9pCPn3U+nOKLuzeuAV9mNMYCV+O87Bt8ayB8xs1G+7C25f7xp5uSif5cpcXW5NX/HclvfvMmhbDy2LRXXBbEXHWbQ58hyHHRus0HMlW+8j39CRcpMM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784664787; c=relaxed/simple; bh=SicB843QRBVPxjY8zpoBEAAiwMD6e2Hyd98Neaevnng=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TjhmKzHyKGRwTXxb6tpg6205VCTn7Np5jSmGEK8rGSK/yWCySNPSeUcQVPNZfMqe6joLhlYn1jndXHXXKQg6SwoXtHdR9DE66snLahVTuZIJUsjoFJc3LJz39okrTvn3f4gM3F48VcHdfMWQLGxASgy8N7xSnXHNvUkoYAu/7i0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=yr9/HlwO; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="yr9/HlwO" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5BBD81F000E9; Tue, 21 Jul 2026 20:13:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1784664785; bh=k14xtHiEiE/xnTS+ff4gPzOldDdC67mrnr12AimHmBI=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=yr9/HlwOZXHC4Cm2qhXoBj4rqK/kEcrNR8rI3/hKv3rl2sCaRvNSWfP5/2xuHyN9k TwcWTQ5KvQsK4y/w29JD2GdWWPeY9cwsVBrAKUKhqD+CyADK1LvuJM8gu8IjJnvmUS krY3B1DwtZELmVLHeajK/1zSbwzECFu/Kqcep24Y= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Claudia Draghicescu , Luiz Augusto von Dentz , Sasha Levin Subject: [PATCH 6.6 0059/1266] Bluetooth: ISO: Copy BASE if service data matches EIR_BAA_SERVICE_UUID Date: Tue, 21 Jul 2026 17:08:16 +0200 Message-ID: <20260721152443.121059610@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721152441.786066624@linuxfoundation.org> References: <20260721152441.786066624@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.6-stable review patch. If anyone has any objections, please let me know. ------------------ From: Claudia Draghicescu [ Upstream commit f4da3ee15de9944482382181329bb6d7335ca003 ] Copy the content of a Periodic Advertisement Report to BASE only if the service UUID is Basic Audio Announcement Service UUID. Signed-off-by: Claudia Draghicescu Signed-off-by: Luiz Augusto von Dentz Signed-off-by: Sasha Levin --- net/bluetooth/iso.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c index 011b2187bd8516..8843bd5c5812ba 100644 --- a/net/bluetooth/iso.c +++ b/net/bluetooth/iso.c @@ -14,6 +14,7 @@ #include #include #include +#include "eir.h" static const struct proto_ops iso_sock_ops; @@ -47,6 +48,7 @@ static void iso_sock_kill(struct sock *sk); #define EIR_SERVICE_DATA_LENGTH 4 #define BASE_MAX_LENGTH (HCI_MAX_PER_AD_LENGTH - EIR_SERVICE_DATA_LENGTH) +#define EIR_BAA_SERVICE_UUID 0x1851 /* iso_pinfo flags values */ enum { @@ -1587,6 +1589,8 @@ static int iso_sock_getsockopt(struct socket *sock, int level, int optname, len = min_t(unsigned int, len, base_len); if (copy_to_user(optval, base, len)) err = -EFAULT; + if (put_user(len, optlen)) + err = -EFAULT; break; @@ -1928,12 +1932,16 @@ int iso_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags) ev3 = hci_recv_event_data(hdev, HCI_EV_LE_PER_ADV_REPORT); if (ev3) { + size_t base_len = ev3->length; + u8 *base; + sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr, iso_match_sync_handle_pa_report, ev3); - - if (sk) { - memcpy(iso_pi(sk)->base, ev3->data, ev3->length); - iso_pi(sk)->base_len = ev3->length; + base = eir_get_service_data(ev3->data, ev3->length, + EIR_BAA_SERVICE_UUID, &base_len); + if (base && sk && base_len <= sizeof(iso_pi(sk)->base)) { + memcpy(iso_pi(sk)->base, base, base_len); + iso_pi(sk)->base_len = base_len; } } else { sk = iso_get_sock_listen(&hdev->bdaddr, BDADDR_ANY, NULL, NULL); -- 2.53.0