Linux bluetooth development
 help / color / mirror / Atom feed
* Re: [PATCH v9 1/1] Bluetooth: L2CAP: Fix use-after-free in l2cap_sock_new_connection_cb()
From: Siwei Zhang @ 2026-06-04 15:52 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
In-Reply-To: <CABBYNZ+zZCTDqoJo4X9oqo-8gGkEXv6-Y=50oU-CVXmTztAsAA@mail.gmail.com>

Hi Luiz,

On Wed, Jun 3, 2026, at 2:17 PM, Luiz Augusto von Dentz wrote:
> Hi Siwei,
>
> On Wed, Jun 3, 2026 at 11:09 AM Siwei Zhang <oss@fourdim.xyz> wrote:
>>
>> l2cap_sock_new_connection_cb() accesses l2cap_pi(sk)->chan after
>> release_sock(parent). Once the parent lock is released, the child
>> socket sk can be freed by another task.
>>
>> Allocate the channel outside the func to prevent this.
>>
>> Fixes: 8ffb929098a5 ("Bluetooth: Remove parent socket usage from l2cap_core.c")
>> Cc: stable@kernel.org
>> Assisted-by: Claude:claude-opus-4-8
>> Signed-off-by: Siwei Zhang <oss@fourdim.xyz>
>> ---
>>  include/net/bluetooth/l2cap.h | 10 +++--
>>  net/bluetooth/6lowpan.c       | 31 +++++++------
>>  net/bluetooth/l2cap_core.c    | 41 ++++++++++++-----
>>  net/bluetooth/l2cap_sock.c    | 83 +++++++++++++++++++++--------------
>>  net/bluetooth/smp.c           | 17 ++++---
>>  5 files changed, 113 insertions(+), 69 deletions(-)
>>
>> diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
>> index e0a1f2293679..7f5e4647f6e0 100644
>> --- a/include/net/bluetooth/l2cap.h
>> +++ b/include/net/bluetooth/l2cap.h
>> @@ -620,7 +620,9 @@ struct l2cap_chan {
>>  struct l2cap_ops {
>>         char                    *name;
>>
>> -       struct l2cap_chan       *(*new_connection) (struct l2cap_chan *chan);
>> +       int                     (*new_connection)(struct l2cap_conn *conn,
>> +                                                 struct l2cap_chan *chan,
>> +                                                 struct l2cap_chan *new_chan);
>>         int                     (*recv) (struct l2cap_chan * chan,
>>                                          struct sk_buff *skb);
>>         void                    (*teardown) (struct l2cap_chan *chan, int err);
>> @@ -884,9 +886,11 @@ static inline __u16 __next_seq(struct l2cap_chan *chan, __u16 seq)
>>         return (seq + 1) % (chan->tx_win_max + 1);
>>  }
>>
>> -static inline struct l2cap_chan *l2cap_chan_no_new_connection(struct l2cap_chan *chan)
>> +static inline int l2cap_chan_no_new_connection(struct l2cap_conn *conn,
>> +                                              struct l2cap_chan *chan,
>> +                                              struct l2cap_chan *new_chan)
>>  {
>> -       return NULL;
>> +       return -EOPNOTSUPP;
>>  }
>>
>>  static inline int l2cap_chan_no_recv(struct l2cap_chan *chan, struct sk_buff *skb)
>> diff --git a/net/bluetooth/6lowpan.c b/net/bluetooth/6lowpan.c
>> index cb1e329d66fd..94863af97a44 100644
>> --- a/net/bluetooth/6lowpan.c
>> +++ b/net/bluetooth/6lowpan.c
>> @@ -624,6 +624,15 @@ static bool is_bt_6lowpan(struct hci_conn *hcon)
>>         return true;
>>  }
>>
>> +static void chan_init(struct l2cap_chan *chan)
>> +{
>> +       l2cap_chan_set_defaults(chan);
>> +
>> +       chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
>> +       chan->mode = L2CAP_MODE_LE_FLOWCTL;
>> +       chan->imtu = 1280;
>> +}
>> +
>>  static struct l2cap_chan *chan_create(void)
>>  {
>>         struct l2cap_chan *chan;
>> @@ -632,11 +641,7 @@ static struct l2cap_chan *chan_create(void)
>>         if (!chan)
>>                 return NULL;
>>
>> -       l2cap_chan_set_defaults(chan);
>> -
>> -       chan->chan_type = L2CAP_CHAN_CONN_ORIENTED;
>> -       chan->mode = L2CAP_MODE_LE_FLOWCTL;
>> -       chan->imtu = 1280;
>> +       chan_init(chan);
>>
>>         return chan;
>>  }
>> @@ -745,19 +750,19 @@ static inline void chan_ready_cb(struct l2cap_chan *chan)
>>         ifup(dev->netdev);
>>  }
>>
>> -static inline struct l2cap_chan *chan_new_conn_cb(struct l2cap_chan *pchan)
>> +static inline int chan_new_conn_cb(struct l2cap_conn *conn,
>> +                                  struct l2cap_chan *pchan,
>> +                                  struct l2cap_chan *chan)
>>  {
>> -       struct l2cap_chan *chan;
>> -
>> -       chan = chan_create();
>> -       if (!chan)
>> -               return NULL;
>> -
>> +       chan_init(chan);
>>         chan->ops = pchan->ops;
>>
>> +       /* Take the conn list reference; see l2cap_new_connection(). */
>> +       __l2cap_chan_add(conn, chan);
>> +
>>         BT_DBG("chan %p pchan %p", chan, pchan);
>>
>> -       return chan;
>> +       return 0;
>>  }
>>
>>  static void unregister_dev(struct lowpan_btle_dev *dev)
>> diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
>> index c4ccfbda9d78..62acf90837fb 100644
>> --- a/net/bluetooth/l2cap_core.c
>> +++ b/net/bluetooth/l2cap_core.c
>> @@ -4007,6 +4007,31 @@ static inline int l2cap_command_rej(struct l2cap_conn *conn,
>>         return 0;
>>  }
>>
>> +/* Allocate and initialise a channel for an incoming connection.
>> + *
>> + * ->new_connection() initialises the channel and links it into @conn with
>> + * __l2cap_chan_add(). The l2cap_chan_create() reference becomes the one owned
>> + * by the parent subsystem (l2cap_pi(sk)->chan, conn->smp or peer->chan) and is
>> + * released by its teardown callback; the conn list reference is released by
>> + * l2cap_chan_del().
>> + */
>> +static struct l2cap_chan *l2cap_new_connection(struct l2cap_conn *conn,
>> +                                              struct l2cap_chan *pchan)
>> +{
>> +       struct l2cap_chan *chan;
>> +
>> +       chan = l2cap_chan_create();
>> +       if (!chan)
>> +               return NULL;
>> +
>> +       if (pchan->ops->new_connection(conn, pchan, chan) < 0) {
>> +               l2cap_chan_put(chan);
>> +               return NULL;
>> +       }
>
> I don't quite get why we can't just place __l2cap_chan_add here
> instead of having it called by new_connection callbacks?
>

It's specifically the l2cap_sock_new_connection_cb() case - the very
use-after-free this patch fixes. The __l2cap_chan_add() has to happen while
the parent lock is still held, and only the callback holds that lock.

The reference counting on the new child chan starts at one ref, 
owned by the new socket:

	/* l2cap_new_connection() */
	chan = l2cap_chan_create();		/* refcount = 1 */
	if (!chan)
		return NULL;

	pchan->ops->new_connection(conn, pchan, chan);

and inside the socket callback:

	/* l2cap_sock_new_connection_cb() */
	lock_sock(parent);
	...
	sk = l2cap_sock_alloc(..., new_chan);	/* sk owns the chan_create ref */
	...
	l2cap_sock_init(sk, parent);

	__l2cap_chan_add(conn, new_chan);	/* (A) conn list takes a ref */
	bt_accept_enqueue(parent, sk, false);	/* (B) sk now on accept queue */

	release_sock(parent);			/* (C) parent lock dropped */
	return 0;

The moment we hit (C), sk is reachable through the parent's accept queue, so
another task can grab and tear it down:

	accept() -> l2cap_sock_kill() -> l2cap_sock_put_chan()
		chan->data = NULL;
		l2cap_chan_put(chan);		/* drops the sk's chan ref */

If __l2cap_chan_add() at (A) hadn't already taken the conn list reference,
that put would drop the last ref and free new_chan. Control then returns up
to l2cap_new_connection(), which hands the now-freed chan back to
l2cap_connect():

	/* l2cap_connect() - runs after the callback returns */
	chan = l2cap_new_connection(conn, pchan);
	if (!chan)
		goto response;
	...
	bacpy(&chan->src, &conn->hcon->src);	/* <-- UAF on freed chan */
	chan->psm  = psm;
	chan->dcid = scid;

The conn list reference taken at (A), before (C), is what keeps new_chan
alive across the release_sock() window so l2cap_connect() can keep using it.

So __l2cap_chan_add() can't move out to l2cap_new_connection(): by the time
the callback returns, the parent lock is already dropped and chan may already
be freed - which is exactly the race. It has to be taken inside the callback,
under the parent lock, before the socket is exposed.

The other callbacks (6lowpan, smp) have no equivalent lock-drop window.
 I kept __l2cap_chan_add() inside all of the ->new_connection() callbacks
just to keep the "callback links the channel into conn" contract uniform.

>> +
>> +       return chan;
>> +}
>> +
>>  static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd,
>>                           u8 *data, u8 rsp_code)
>>  {
>> @@ -4053,7 +4078,7 @@ static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd,
>>                 goto response;
>>         }
>>
>> -       chan = pchan->ops->new_connection(pchan);
>> +       chan = l2cap_new_connection(conn, pchan);
>>         if (!chan)
>>                 goto response;
>>
>> @@ -4071,8 +4096,6 @@ static void l2cap_connect(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd,
>>         chan->psm  = psm;
>>         chan->dcid = scid;
>>
>> -       __l2cap_chan_add(conn, chan);
>> -
>>         dcid = chan->scid;
>>
>>         __set_chan_timer(chan, chan->ops->get_sndtimeo(chan));
>> @@ -4955,7 +4978,7 @@ static int l2cap_le_connect_req(struct l2cap_conn *conn,
>>                 goto response_unlock;
>>         }
>>
>> -       chan = pchan->ops->new_connection(pchan);
>> +       chan = l2cap_new_connection(conn, pchan);
>>         if (!chan) {
>>                 result = L2CAP_CR_LE_NO_MEM;
>>                 goto response_unlock;
>> @@ -4970,8 +4993,6 @@ static int l2cap_le_connect_req(struct l2cap_conn *conn,
>>         chan->omtu = mtu;
>>         chan->remote_mps = mps;
>>
>> -       __l2cap_chan_add(conn, chan);
>> -
>>         l2cap_le_flowctl_init(chan, __le16_to_cpu(req->credits));
>>
>>         dcid = chan->scid;
>> @@ -5179,7 +5200,7 @@ static inline int l2cap_ecred_conn_req(struct l2cap_conn *conn,
>>                         continue;
>>                 }
>>
>> -               chan = pchan->ops->new_connection(pchan);
>> +               chan = l2cap_new_connection(conn, pchan);
>>                 if (!chan) {
>>                         result = L2CAP_CR_LE_NO_MEM;
>>                         continue;
>> @@ -5194,8 +5215,6 @@ static inline int l2cap_ecred_conn_req(struct l2cap_conn *conn,
>>                 chan->omtu = mtu;
>>                 chan->remote_mps = mps;
>>
>> -               __l2cap_chan_add(conn, chan);
>> -
>>                 l2cap_ecred_init(chan, __le16_to_cpu(req->credits));
>>
>>                 /* Init response */
>> @@ -7470,14 +7489,12 @@ static void l2cap_connect_cfm(struct hci_conn *hcon, u8 status)
>>                         goto next;
>>
>>                 l2cap_chan_lock(pchan);
>> -               chan = pchan->ops->new_connection(pchan);
>> +               chan = l2cap_new_connection(conn, pchan);
>>                 if (chan) {
>>                         bacpy(&chan->src, &hcon->src);
>>                         bacpy(&chan->dst, &hcon->dst);
>>                         chan->src_type = bdaddr_src_type(hcon);
>>                         chan->dst_type = dst_type;
>> -
>> -                       __l2cap_chan_add(conn, chan);
>>                 }
>>
>>                 l2cap_chan_unlock(pchan);
>> diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
>> index 025329636353..87f4c0db5c0c 100644
>> --- a/net/bluetooth/l2cap_sock.c
>> +++ b/net/bluetooth/l2cap_sock.c
>> @@ -46,7 +46,8 @@ static struct bt_sock_list l2cap_sk_list = {
>>  static const struct proto_ops l2cap_sock_ops;
>>  static void l2cap_sock_init(struct sock *sk, struct sock *parent);
>>  static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
>> -                                    int proto, gfp_t prio, int kern);
>> +                                    int proto, gfp_t prio, int kern,
>> +                                    struct l2cap_chan *chan);
>>  static void l2cap_sock_cleanup_listen(struct sock *parent);
>>
>>  bool l2cap_is_socket(struct socket *sock)
>> @@ -1287,6 +1288,23 @@ static int l2cap_sock_recvmsg(struct socket *sock, struct msghdr *msg,
>>         return err;
>>  }
>>
>> +/* Release the sock's ref on chan and clear the pointer so that the ref is
>> + * dropped exactly once even if both l2cap_sock_kill() and
>> + * l2cap_sock_destruct() run. Setting chan->data to NULL first stops any other
>> + * task from dereferencing the now-dead sock pointer.
>> + */
>> +static void l2cap_sock_put_chan(struct sock *sk)
>> +{
>> +       struct l2cap_chan *chan = l2cap_pi(sk)->chan;
>> +
>> +       if (!chan)
>> +               return;
>> +
>> +       chan->data = NULL;
>> +       l2cap_pi(sk)->chan = NULL;
>> +       l2cap_chan_put(chan);
>> +}
>> +
>>  /* Kill socket (only if zapped and orphan)
>>   * Must be called on unlocked socket, with l2cap channel lock.
>>   */
>> @@ -1297,13 +1315,9 @@ static void l2cap_sock_kill(struct sock *sk)
>>
>>         BT_DBG("sk %p state %s", sk, state_to_string(sk->sk_state));
>>
>> -       /* Sock is dead, so set chan data to NULL, avoid other task use invalid
>> -        * sock pointer.
>> -        */
>> -       l2cap_pi(sk)->chan->data = NULL;
>> -       /* Kill poor orphan */
>> +       l2cap_sock_put_chan(sk);
>>
>> -       l2cap_chan_put(l2cap_pi(sk)->chan);
>> +       /* Kill poor orphan */
>>         sock_set_flag(sk, SOCK_DEAD);
>>         sock_put(sk);
>>  }
>> @@ -1546,12 +1560,14 @@ static void l2cap_sock_cleanup_listen(struct sock *parent)
>>         }
>>  }
>>
>> -static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
>> +static int l2cap_sock_new_connection_cb(struct l2cap_conn *conn,
>> +                                       struct l2cap_chan *chan,
>> +                                       struct l2cap_chan *new_chan)
>>  {
>>         struct sock *sk, *parent = chan->data;
>>
>>         if (!parent)
>> -               return NULL;
>> +               return -EINVAL;
>>
>>         lock_sock(parent);
>>
>> @@ -1559,25 +1575,33 @@ static struct l2cap_chan *l2cap_sock_new_connection_cb(struct l2cap_chan *chan)
>>         if (sk_acceptq_is_full(parent)) {
>>                 BT_DBG("backlog full %d", parent->sk_ack_backlog);
>>                 release_sock(parent);
>> -               return NULL;
>> +               return -ENOBUFS;
>>         }
>>
>>         sk = l2cap_sock_alloc(sock_net(parent), NULL, BTPROTO_L2CAP,
>> -                             GFP_ATOMIC, 0);
>> +                             GFP_ATOMIC, 0, new_chan);
>>         if (!sk) {
>>                 release_sock(parent);
>> -               return NULL;
>> -        }
>> +               return -ENOMEM;
>> +       }
>>
>>         bt_sock_reclassify_lock(sk, BTPROTO_L2CAP);
>>
>>         l2cap_sock_init(sk, parent);
>>
>> +       /* Link the channel into conn before exposing the new socket via the
>> +        * accept queue. Once release_sock() below drops the parent lock the
>> +        * socket may be freed by another task, dropping its reference on
>> +        * new_chan; the conn list reference taken here keeps new_chan alive so
>> +        * the caller can safely use it after ->new_connection() returns.
>> +        */
>> +       __l2cap_chan_add(conn, new_chan);
>> +
>>         bt_accept_enqueue(parent, sk, false);
>>
>>         release_sock(parent);
>>
>> -       return l2cap_pi(sk)->chan;
>> +       return 0;
>>  }
>>
>>  static int l2cap_sock_recv_cb(struct l2cap_chan *chan, struct sk_buff *skb)
>> @@ -1874,10 +1898,7 @@ static void l2cap_sock_destruct(struct sock *sk)
>>
>>         BT_DBG("sk %p", sk);
>>
>> -       if (l2cap_pi(sk)->chan) {
>> -               l2cap_pi(sk)->chan->data = NULL;
>> -               l2cap_chan_put(l2cap_pi(sk)->chan);
>> -       }
>> +       l2cap_sock_put_chan(sk);
>>
>>         list_for_each_entry_safe(rx_busy, next, &l2cap_pi(sk)->rx_busy, list) {
>>                 kfree_skb(rx_busy->skb);
>> @@ -1978,10 +1999,10 @@ static struct proto l2cap_proto = {
>>  };
>>
>>  static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
>> -                                    int proto, gfp_t prio, int kern)
>> +                                    int proto, gfp_t prio, int kern,
>> +                                    struct l2cap_chan *chan)
>>  {
>>         struct sock *sk;
>> -       struct l2cap_chan *chan;
>>
>>         sk = bt_sock_alloc(net, sock, &l2cap_proto, proto, prio, kern);
>>         if (!sk)
>> @@ -1992,16 +2013,7 @@ static struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
>>
>>         INIT_LIST_HEAD(&l2cap_pi(sk)->rx_busy);
>>
>> -       chan = l2cap_chan_create();
>> -       if (!chan) {
>> -               sk_free(sk);
>> -               if (sock)
>> -                       sock->sk = NULL;
>> -               return NULL;
>> -       }
>> -
>> -       l2cap_chan_hold(chan);
>> -
>> +       /* The sock takes ownership of the caller's reference on chan. */
>>         l2cap_pi(sk)->chan = chan;
>>
>>         return sk;
>> @@ -2011,6 +2023,7 @@ static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
>>                              int kern)
>>  {
>>         struct sock *sk;
>> +       struct l2cap_chan *chan;
>>
>>         BT_DBG("sock %p", sock);
>>
>> @@ -2025,10 +2038,16 @@ static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
>>
>>         sock->ops = &l2cap_sock_ops;
>>
>> -       sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
>> -       if (!sk)
>> +       chan = l2cap_chan_create();
>> +       if (!chan)
>>                 return -ENOMEM;
>>
>> +       sk = l2cap_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern, chan);
>> +       if (!sk) {
>> +               l2cap_chan_put(chan);
>> +               return -ENOMEM;
>> +       }
>> +
>>         l2cap_sock_init(sk, NULL);
>>         bt_sock_link(&l2cap_sk_list, sk);
>>         return 0;
>> diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
>> index 1739c1989dbd..2d31c3c7bbc0 100644
>> --- a/net/bluetooth/smp.c
>> +++ b/net/bluetooth/smp.c
>> @@ -3204,16 +3204,12 @@ static const struct l2cap_ops smp_chan_ops = {
>>         .get_sndtimeo           = l2cap_chan_no_get_sndtimeo,
>>  };
>>
>> -static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan)
>> +static inline int smp_new_conn_cb(struct l2cap_conn *conn,
>> +                                 struct l2cap_chan *pchan,
>> +                                 struct l2cap_chan *chan)
>>  {
>> -       struct l2cap_chan *chan;
>> -
>>         BT_DBG("pchan %p", pchan);
>>
>> -       chan = l2cap_chan_create();
>> -       if (!chan)
>> -               return NULL;
>> -
>>         chan->chan_type = pchan->chan_type;
>>         chan->ops       = &smp_chan_ops;
>>         chan->scid      = pchan->scid;
>> @@ -3229,9 +3225,12 @@ static inline struct l2cap_chan *smp_new_conn_cb(struct l2cap_chan *pchan)
>>          */
>>         atomic_set(&chan->nesting, L2CAP_NESTING_SMP);
>>
>> -       BT_DBG("created chan %p", chan);
>> +       /* Take the conn list reference; see l2cap_new_connection(). */
>> +       __l2cap_chan_add(conn, chan);
>>
>> -       return chan;
>> +       BT_DBG("initialised chan %p", chan);
>> +
>> +       return 0;
>>  }
>>
>>  static const struct l2cap_ops smp_root_chan_ops = {
>> --
>> 2.54.0
>>
>
>
> -- 
> Luiz Augusto von Dentz

Best,
Siwei

^ permalink raw reply

* RE: [PATCH v2] Bluetooth: Add SPDX id lines to some source files
From: Bird, Tim @ 2026-06-04 16:38 UTC (permalink / raw)
  To: Bastien Nocera, marcel@holtmann.org, luiz.dentz@gmail.com,
	jannh@google.com, kuba@kernel.org, kiran.k@intel.com,
	chharry@chromium.org, gustavo@padovan.org,
	prameela.j04cs@gmail.com, salvatore.benedetto@intel.com,
	maxk@qualcomm.com
  Cc: linux-bluetooth@vger.kernel.org, linux-spdx@vger.kernel.org,
	linux-kernel@vger.kernel.org
In-Reply-To: <1b4540a3814b2e6106f48435df8692beaf177f8a.camel@hadess.net>

Hey Bastien,

> -----Original Message-----
> From: Bastien Nocera <hadess@hadess.net>
> Hello Tim,
> 
> On Wed, 2026-06-03 at 18:41 -0600, Tim Bird wrote:
> > Many bluetooth source files are missing SPDX-License-Identifier
> > lines. Add appropriate IDs to these files, and remove other
> > license lines from the headers.
> 
> I think it would be useful to separate the changes in drivers/bluetooth
> and the ones in {include/,}net/bluetooth.

I thought about that.  There's only one file in drivers/bluetooth in this patch, 
and it's got a very straightforward and unambiguous license situation.
I thought it would be easier for the Bluetooth maintainers to see one patch
instead of multiple, but I can break that one file out if needed.

These types of changes are usually done in batches, with patch boundaries
matching maintainer or sub-system boundaries, rather than directory
boundaries.

> 
> Why do some of the id lines use C-style comments and others C++-style
> comments? (/* */ vs. //) ?

This is due to some old parsers that operate on kernel source not handling
// in .h files very well.
See Documentation/process/license-rules.rst (Section 2 on Style:)
 
> > Leave the warranty disclaimer in files where the license ID is
> > GPL-2.0 but the wording of the disclaimer is slightly different
> > from that of the GPL v2 disclaimer.
> >
> > It is not different enough to cause licensing conflicts, but is
> > kept to honor the original contributors' legal intent.
> 
> Good job doing this, do you know if there's a plan to automate this
> somehow?

A lot of what could be done automatically was already done, in 
2017 by Greg KH and in 2019 by Thomas Gleixner.  I'm following up
now on files that were either overlooked, or have special issues.

I do use tools for analysis and to help automate some tasks.
See https://github.com/tbird20d/spdx-project

> It would be great to be able to re-run a script on top of a
> codebase to verify that no sources were missed, and that we got the
> same license ID assigned for the same license verbiage in the source
> headers.

See scripts/spdxcheck.py.

I also have some automation that checks
the overall status (by top-level kernel directory), with results posted here:
https://birdcloud.org/bc/KTest_Missing_SPDX

Some of the tools I use check the license verbiage in the source headers,
but I also manually compare the verbiage to make sure I am assigning
the right license.  In the case of these Bluetooth files, the verbiage is quite
clear about the intended license, but I got caught by some differences
in the warranty disclaimer that I missed, making a second version of this
patch necessary.
   -- Tim

P.S. I gave a talk on this work at Open Source Summit North America a few weeks ago.
You can find my slides and info about that talk here: 
https://osselcna2026.sched.com/event/2JQtC/spdx-and-sbom-work-for-the-linux-kernel-tim-bird-sony-electronics


^ permalink raw reply

* RE: [PATCH v2] Bluetooth: Add SPDX id lines to some source files
From: Bird, Tim @ 2026-06-04 16:41 UTC (permalink / raw)
  To: Luiz Augusto von Dentz
  Cc: marcel@holtmann.org, jannh@google.com, kuba@kernel.org,
	kiran.k@intel.com, chharry@chromium.org, gustavo@padovan.org,
	prameela.j04cs@gmail.com, salvatore.benedetto@intel.com,
	maxk@qualcomm.com, linux-bluetooth@vger.kernel.org,
	linux-spdx@vger.kernel.org, linux-kernel@vger.kernel.org
In-Reply-To: <CABBYNZ+j8M4LrG1V0ESrtG3sWR4vgstHGjQQauekBFf3B7DD6w@mail.gmail.com>



> -----Original Message-----
> From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Hi Tim,
> 
> On Wed, Jun 3, 2026 at 8:44 PM Tim Bird <tim.bird@sony.com> wrote:
> >
> > Many bluetooth source files are missing SPDX-License-Identifier
> > lines. Add appropriate IDs to these files, and remove other
> > license lines from the headers.
> >
> > Leave the warranty disclaimer in files where the license ID is
> > GPL-2.0 but the wording of the disclaimer is slightly different
> > from that of the GPL v2 disclaimer.
> >
> > It is not different enough to cause licensing conflicts, but is
> > kept to honor the original contributors' legal intent.
> >
> > ---
> > V1 -> V2:
> >  - Leave different warranty disclaimers (which is most them)
> >  - Remove files recently removed from drivers/bluetooth from the patch
> >
> > Signed-off-by: Tim Bird <tim.bird@sony.com>
> 
> `git am` doesn't pick up your Signed-off-by because it is after ---`,
> it seems to be considered a comment.

Ah crud!!  What a dumb mistake on my part.
Thanks for the heads up.

Should I send a v3 to fix this?

 -- Tim


^ permalink raw reply

* Re: [PATCH v2] Bluetooth: Add SPDX id lines to some source files
From: Luiz Augusto von Dentz @ 2026-06-04 16:53 UTC (permalink / raw)
  To: Bird, Tim
  Cc: marcel@holtmann.org, jannh@google.com, kuba@kernel.org,
	kiran.k@intel.com, chharry@chromium.org, gustavo@padovan.org,
	prameela.j04cs@gmail.com, salvatore.benedetto@intel.com,
	maxk@qualcomm.com, linux-bluetooth@vger.kernel.org,
	linux-spdx@vger.kernel.org, linux-kernel@vger.kernel.org
In-Reply-To: <MW5PR13MB56328C7D133CCC8C584CAE27FD102@MW5PR13MB5632.namprd13.prod.outlook.com>

Hi Tim,

On Thu, Jun 4, 2026 at 12:41 PM Bird, Tim <Tim.Bird@sony.com> wrote:
>
>
>
> > -----Original Message-----
> > From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> > Hi Tim,
> >
> > On Wed, Jun 3, 2026 at 8:44 PM Tim Bird <tim.bird@sony.com> wrote:
> > >
> > > Many bluetooth source files are missing SPDX-License-Identifier
> > > lines. Add appropriate IDs to these files, and remove other
> > > license lines from the headers.
> > >
> > > Leave the warranty disclaimer in files where the license ID is
> > > GPL-2.0 but the wording of the disclaimer is slightly different
> > > from that of the GPL v2 disclaimer.
> > >
> > > It is not different enough to cause licensing conflicts, but is
> > > kept to honor the original contributors' legal intent.
> > >
> > > ---
> > > V1 -> V2:
> > >  - Leave different warranty disclaimers (which is most them)
> > >  - Remove files recently removed from drivers/bluetooth from the patch
> > >
> > > Signed-off-by: Tim Bird <tim.bird@sony.com>
> >
> > `git am` doesn't pick up your Signed-off-by because it is after ---`,
> > it seems to be considered a comment.
>
> Ah crud!!  What a dumb mistake on my part.
> Thanks for the heads up.
>
> Should I send a v3 to fix this?

I can readd it manually if you are not planning a v3 to address other comments.

-- 
Luiz Augusto von Dentz

^ permalink raw reply

* RE: [PATCH v2] Bluetooth: Add SPDX id lines to some source files
From: Bird, Tim @ 2026-06-04 17:03 UTC (permalink / raw)
  To: Luiz Augusto von Dentz
  Cc: marcel@holtmann.org, jannh@google.com, kuba@kernel.org,
	kiran.k@intel.com, chharry@chromium.org, gustavo@padovan.org,
	prameela.j04cs@gmail.com, maxk@qualcomm.com,
	linux-bluetooth@vger.kernel.org, linux-spdx@vger.kernel.org,
	linux-kernel@vger.kernel.org
In-Reply-To: <CABBYNZKv=+atEF6Ko6Zs=uc+KtK+4xq2Ak_Re4H8jA45gkwtdA@mail.gmail.com>



> -----Original Message-----
> From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> Hi Tim,
> 
> On Thu, Jun 4, 2026 at 12:41 PM Bird, Tim <Tim.Bird@sony.com> wrote:
> >
> >
> >
> > > -----Original Message-----
> > > From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> > > Hi Tim,
> > >
> > > On Wed, Jun 3, 2026 at 8:44 PM Tim Bird <tim.bird@sony.com> wrote:
> > > >
> > > > Many bluetooth source files are missing SPDX-License-Identifier
> > > > lines. Add appropriate IDs to these files, and remove other
> > > > license lines from the headers.
> > > >
> > > > Leave the warranty disclaimer in files where the license ID is
> > > > GPL-2.0 but the wording of the disclaimer is slightly different
> > > > from that of the GPL v2 disclaimer.
> > > >
> > > > It is not different enough to cause licensing conflicts, but is
> > > > kept to honor the original contributors' legal intent.
> > > >
> > > > ---
> > > > V1 -> V2:
> > > >  - Leave different warranty disclaimers (which is most them)
> > > >  - Remove files recently removed from drivers/bluetooth from the patch
> > > >
> > > > Signed-off-by: Tim Bird <tim.bird@sony.com>
> > >
> > > `git am` doesn't pick up your Signed-off-by because it is after ---`,
> > > it seems to be considered a comment.
> >
> > Ah crud!!  What a dumb mistake on my part.
> > Thanks for the heads up.
> >
> > Should I send a v3 to fix this?
> 
> I can readd it manually if you are not planning a v3 to address other comments.

I've got a v3 with this fix already made, and ready to send, but I was holding off to
see if any other comments showed up.  I had planned to wait until tomorrow to send
it.  I'm fine with either option: sending again, or having you manually fix it.

...

Ah, what the heck, out of an abundance of overconfidence, I'll send a v3 and
people can look at that...

Look for one shortly.
 -- Tim

P.S. I removed the 'To:' for Salvatore Benedetto since I was getting bounces.

^ permalink raw reply

* [PATCH v3] Bluetooth: Add SPDX id lines to some source files
From: Tim Bird @ 2026-06-04 17:06 UTC (permalink / raw)
  To: marcel, luiz.dentz, jannh, kuba, kiran.k, chharry, gustavo,
	prameela.j04cs, maxk
  Cc: tim.bird, linux-bluetooth, linux-spdx, linux-kernel

Many bluetooth source files are missing SPDX-License-Identifier
lines. Add appropriate IDs to these files, and remove other
license lines from the headers.

Leave the warranty disclaimer in files where the license ID is
GPL-2.0 but the wording of the disclaimer is slightly different
from that of the GPL v2 disclaimer.

It is not different enough to cause licensing conflicts, but is
kept to honor the original contributors' legal intent.

Signed-off-by: Tim Bird <tim.bird@sony.com>
---
V2 -> V3:
 - move Signed-off-by above changlog
V1 -> V2:
 - Leave different warranty disclaimers (which is most them)
 - Remove files recently removed from drivers/bluetooth from the patch
---
 drivers/bluetooth/btrsi.c         | 12 +-----------
 include/net/bluetooth/bluetooth.h |  5 +----
 include/net/bluetooth/hci.h       |  5 +----
 include/net/bluetooth/hci_core.h  |  5 +----
 include/net/bluetooth/hci_mon.h   |  5 +----
 include/net/bluetooth/hci_sock.h  |  5 +----
 include/net/bluetooth/l2cap.h     |  5 +----
 include/net/bluetooth/mgmt.h      |  5 +----
 include/net/bluetooth/rfcomm.h    |  5 +----
 include/net/bluetooth/sco.h       |  5 +----
 net/bluetooth/af_bluetooth.c      |  5 +----
 net/bluetooth/bnep/core.c         |  5 +----
 net/bluetooth/bnep/netdev.c       |  5 +----
 net/bluetooth/bnep/sock.c         |  5 +----
 net/bluetooth/ecdh_helper.c       |  5 +----
 net/bluetooth/ecdh_helper.h       |  5 +----
 net/bluetooth/hci_conn.c          |  5 +----
 net/bluetooth/hci_core.c          |  5 +----
 net/bluetooth/hci_debugfs.c       |  5 +----
 net/bluetooth/hci_debugfs.h       |  5 +----
 net/bluetooth/hci_event.c         |  5 +----
 net/bluetooth/hci_sock.c          |  5 +----
 net/bluetooth/hidp/core.c         |  5 +----
 net/bluetooth/hidp/hidp.h         |  5 +----
 net/bluetooth/hidp/sock.c         |  5 +----
 net/bluetooth/l2cap_core.c        |  5 +----
 net/bluetooth/l2cap_sock.c        |  5 +----
 net/bluetooth/lib.c               |  5 +----
 net/bluetooth/mgmt.c              |  5 +----
 net/bluetooth/mgmt_util.c         |  5 +----
 net/bluetooth/mgmt_util.h         |  5 +----
 net/bluetooth/rfcomm/core.c       |  5 +----
 net/bluetooth/rfcomm/sock.c       |  5 +----
 net/bluetooth/rfcomm/tty.c        |  5 +----
 net/bluetooth/sco.c               |  5 +----
 net/bluetooth/selftest.c          |  5 +----
 net/bluetooth/selftest.h          |  5 +----
 net/bluetooth/smp.c               |  5 +----
 net/bluetooth/smp.h               |  5 +----
 39 files changed, 39 insertions(+), 163 deletions(-)

diff --git a/drivers/bluetooth/btrsi.c b/drivers/bluetooth/btrsi.c
index c68dd2fba01c..59ad0b9b14c3 100644
--- a/drivers/bluetooth/btrsi.c
+++ b/drivers/bluetooth/btrsi.c
@@ -1,17 +1,7 @@
+// SPDX-License-Identifier: ISC
 /*
  * Copyright (c) 2017 Redpine Signals Inc.
  *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 #include <linux/module.h>
 #include <linux/kernel.h>
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
index 3faea66b1979..b624da5026f5 100644
--- a/include/net/bluetooth/bluetooth.h
+++ b/include/net/bluetooth/bluetooth.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
@@ -5,10 +6,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 572b1c620c5d..a8b2e8781054 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
@@ -5,10 +6,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index aa600fbf9a53..7e15da47fe3a 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (c) 2000-2001, 2010, Code Aurora Forum. All rights reserved.
@@ -5,10 +6,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/hci_mon.h b/include/net/bluetooth/hci_mon.h
index bbd752494ef9..4b2a0af4ed58 100644
--- a/include/net/bluetooth/hci_mon.h
+++ b/include/net/bluetooth/hci_mon.h
@@ -1,12 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
 
    Copyright (C) 2011-2012  Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/hci_sock.h b/include/net/bluetooth/hci_sock.h
index 13e8cd4414a1..16f150b861be 100644
--- a/include/net/bluetooth/hci_sock.h
+++ b/include/net/bluetooth/hci_sock.h
@@ -1,13 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index 5172afee5494..b1039ebdf06f 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
@@ -6,10 +7,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
index 8234915854b6..08daed7a96d5 100644
--- a/include/net/bluetooth/mgmt.h
+++ b/include/net/bluetooth/mgmt.h
@@ -1,13 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
 
    Copyright (C) 2010  Nokia Corporation
    Copyright (C) 2011-2012  Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h
index c05882476900..feb6b3ae5e69 100644
--- a/include/net/bluetooth/rfcomm.h
+++ b/include/net/bluetooth/rfcomm.h
@@ -1,12 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    RFCOMM implementation for Linux Bluetooth stack (BlueZ)
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
    Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/include/net/bluetooth/sco.h b/include/net/bluetooth/sco.h
index f40ddb4264fc..214409527b35 100644
--- a/include/net/bluetooth/sco.h
+++ b/include/net/bluetooth/sco.h
@@ -1,13 +1,10 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
index 1a6aa3f8d4d6..bcbc11c9cb15 100644
--- a/net/bluetooth/af_bluetooth.c
+++ b/net/bluetooth/af_bluetooth.c
@@ -1,13 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
index 0de5df690bd0..b18e1cf28bb4 100644
--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BNEP implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2001-2002 Inventel Systemes
@@ -7,10 +8,6 @@
 
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/bnep/netdev.c b/net/bluetooth/bnep/netdev.c
index cc1cff63194f..ee1e39a3daff 100644
--- a/net/bluetooth/bnep/netdev.c
+++ b/net/bluetooth/bnep/netdev.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BNEP implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2001-2002 Inventel Systemes
@@ -7,10 +8,6 @@
 
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/bnep/sock.c b/net/bluetooth/bnep/sock.c
index 00d47bcf4d7d..f3fe818d0e4c 100644
--- a/net/bluetooth/bnep/sock.c
+++ b/net/bluetooth/bnep/sock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BNEP implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2001-2002 Inventel Systemes
@@ -6,10 +7,6 @@
 
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/ecdh_helper.c b/net/bluetooth/ecdh_helper.c
index 0efc93fdae8a..1938e5559d88 100644
--- a/net/bluetooth/ecdh_helper.c
+++ b/net/bluetooth/ecdh_helper.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * ECDH helper functions - KPP wrappings
  *
  * Copyright (C) 2017 Intel Corporation
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/ecdh_helper.h b/net/bluetooth/ecdh_helper.h
index 830723971cf8..9d787d3c8797 100644
--- a/net/bluetooth/ecdh_helper.h
+++ b/net/bluetooth/ecdh_helper.h
@@ -1,12 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
  * ECDH helper functions - KPP wrappings
  *
  * Copyright (C) 2017 Intel Corporation
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation;
- *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 54eabaa46960..c335372e4062 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (c) 2000-2001, 2010, Code Aurora Forum. All rights reserved.
@@ -5,10 +6,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 28d7929dc593..243d01069a91 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
@@ -5,10 +6,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hci_debugfs.c b/net/bluetooth/hci_debugfs.c
index 99e2e9fc70e8..0635e4641db4 100644
--- a/net/bluetooth/hci_debugfs.c
+++ b/net/bluetooth/hci_debugfs.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
 
    Copyright (C) 2014 Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hci_debugfs.h b/net/bluetooth/hci_debugfs.h
index 9a8a7c93bb12..92365cbc922a 100644
--- a/net/bluetooth/hci_debugfs.h
+++ b/net/bluetooth/hci_debugfs.h
@@ -1,11 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2014 Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index eea2f810aafa..e588c744ce36 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (c) 2000-2001, 2010, Code Aurora Forum. All rights reserved.
@@ -5,10 +6,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index 0290dea081f6..c81852411250 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -1,13 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 70344bd3248a..0e24c5e2955e 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    HIDP implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
    Copyright (C) 2013 David Herrmann <dh.herrmann@gmail.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hidp/hidp.h b/net/bluetooth/hidp/hidp.h
index 6ef88d0a1919..959b745bb770 100644
--- a/net/bluetooth/hidp/hidp.h
+++ b/net/bluetooth/hidp/hidp.h
@@ -1,11 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    HIDP implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/hidp/sock.c b/net/bluetooth/hidp/sock.c
index c93aaeb3a3fa..b75bea3cf422 100644
--- a/net/bluetooth/hidp/sock.c
+++ b/net/bluetooth/hidp/sock.c
@@ -1,11 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    HIDP implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2003-2004 Marcel Holtmann <marcel@holtmann.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 45b175399e8d..ad2f26d935ca 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
@@ -8,10 +9,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index c138aa4ae266..e3eda309f1b3 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
@@ -7,10 +8,6 @@
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/lib.c b/net/bluetooth/lib.c
index 305044a84478..cea21a4c49a0 100644
--- a/net/bluetooth/lib.c
+++ b/net/bluetooth/lib.c
@@ -1,13 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index de5bd6b637b2..a732b586979d 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -1,13 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
 
    Copyright (C) 2010  Nokia Corporation
    Copyright (C) 2011-2012 Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/mgmt_util.c b/net/bluetooth/mgmt_util.c
index 4f19654d41a9..6ea107c0e054 100644
--- a/net/bluetooth/mgmt_util.c
+++ b/net/bluetooth/mgmt_util.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
 
    Copyright (C) 2015  Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/mgmt_util.h b/net/bluetooth/mgmt_util.h
index bcba8c9d8952..20810cf06e81 100644
--- a/net/bluetooth/mgmt_util.h
+++ b/net/bluetooth/mgmt_util.h
@@ -1,11 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2015  Intel Coropration
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index d11bd5337d57..593583c694a7 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    RFCOMM implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
    Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index bd7d959c6e9e..bb7cf98f85cf 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    RFCOMM implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
    Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 91bf5274262e..4b9a699ec59b 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    RFCOMM implementation for Linux Bluetooth stack (BlueZ).
    Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com>
    Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index f1799c6a6f87..be5614a6c5ee 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -1,13 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2000-2001 Qualcomm Incorporated
 
    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/selftest.c b/net/bluetooth/selftest.c
index f49604d44b87..ae5b44bb9d3d 100644
--- a/net/bluetooth/selftest.c
+++ b/net/bluetooth/selftest.c
@@ -1,12 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
 
    Copyright (C) 2014 Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/selftest.h b/net/bluetooth/selftest.h
index 2aa0a346a913..34d684ee84fd 100644
--- a/net/bluetooth/selftest.h
+++ b/net/bluetooth/selftest.h
@@ -1,11 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2014 Intel Corporation
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c
index 98f1da4f5f55..ef464568b9c7 100644
--- a/net/bluetooth/smp.c
+++ b/net/bluetooth/smp.c
@@ -1,11 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
diff --git a/net/bluetooth/smp.h b/net/bluetooth/smp.h
index c5da53dfab04..eac27bd541bb 100644
--- a/net/bluetooth/smp.h
+++ b/net/bluetooth/smp.h
@@ -1,11 +1,8 @@
+/* SPDX-License-Identifier: GPL-2.0 */
 /*
    BlueZ - Bluetooth protocol stack for Linux
    Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
 
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License version 2 as
-   published by the Free Software Foundation;
-
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
-- 
2.43.0


^ permalink raw reply related

* [PATCH BlueZ v1] adapter: Fix using case sensitive strncmp for pattern match addresses
From: Luiz Augusto von Dentz @ 2026-06-04 17:19 UTC (permalink / raw)
  To: linux-bluetooth

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

When matching discovery filter pattern with addresses shall be
considered case insensitive since its binary format that can be
printed using either upper or lower case for the range a-f/A-F.
---
 src/adapter.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/adapter.c b/src/adapter.c
index 755c53119e32..9298eda8f3e0 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -7316,7 +7316,7 @@ static bool device_is_discoverable(struct btd_adapter *adapter,
 			return true;
 		}
 
-		if (!strncmp(filter->pattern, addr, pattern_len)) {
+		if (!strncasecmp(filter->pattern, addr, pattern_len)) {
 			*auto_connect = filter->auto_connect;
 			return true;
 		}
-- 
2.54.0


^ permalink raw reply related

* [bluez/bluez] ffc843: adapter: Fix using case sensitive strncmp for patt...
From: Luiz Augusto von Dentz @ 2026-06-04 17:21 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1106123
  Home:   https://github.com/bluez/bluez
  Commit: ffc84378133f5a80135d60b7fa8d6842b8ae41ff
      https://github.com/bluez/bluez/commit/ffc84378133f5a80135d60b7fa8d6842b8ae41ff
  Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M src/adapter.c

  Log Message:
  -----------
  adapter: Fix using case sensitive strncmp for pattern match addresses

When matching discovery filter pattern with addresses shall be
considered case insensitive since its binary format that can be
printed using either upper or lower case for the range a-f/A-F.



To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* Re: [Patch] support libical 4.0
From: patchwork-bot+bluetooth @ 2026-06-04 18:10 UTC (permalink / raw)
  To: Funda Wang; +Cc: linux-bluetooth
In-Reply-To: <1445e90e.ded.19e159db7d2.Coremail.fundawang@yeah.net>

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Mon, 11 May 2026 13:58:38 +0800 (CST) you wrote:
> Hello,
> 
> Since libical 4.0 [1], pkgconfig files of libical have been splitted into several files according to libraries. The libical pkgconfig check need to be tweaked to check libicalvcal. Patch attached.
> 
> Thanks.
> 
> [1]: https://github.com/libical/libical/pull/988
> From e5128e1124efa814d8c65b4797025b1a15c6b250 Mon Sep 17 00:00:00 2001
> From: Funda Wang <fundawang@yeah.net>
> Date: Mon, 11 May 2026 12:37:35 +0800
> Subject: [PATCH] support libical 4.0
> 
> [...]

Here is the summary with links:
  - support libical 4.0
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=e60d07255327

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* Re: [BlueZ] build: Support libical 4.0
From: patchwork-bot+bluetooth @ 2026-06-04 18:10 UTC (permalink / raw)
  To: Bastien Nocera; +Cc: linux-bluetooth, fundawang
In-Reply-To: <20260604080139.1264222-1-hadess@hadess.net>

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu,  4 Jun 2026 10:01:35 +0200 you wrote:
> From: Funda Wang <fundawang@yeah.net>
> 
> libical 4.0 split off some vcal related functions to a separate shared
> library, libicalvcal. As libicalvcal depends on libical itself, first
> check for libicalvcal being available, and if it fails, check for
> just libical.
> 
> [...]

Here is the summary with links:
  - [BlueZ] build: Support libical 4.0
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=e60d07255327

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* Re: [PATCH v3] profile: Set L2CAP IMTU for OBEX profile listeners
From: patchwork-bot+bluetooth @ 2026-06-04 18:10 UTC (permalink / raw)
  To: Wei Deng
  Cc: linux-bluetooth, luiz.von.dentz, cheng.jiang, jinwang.li,
	shuai.zhang
In-Reply-To: <20260604093024.3594022-1-wei.deng@oss.qualcomm.com>

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu,  4 Jun 2026 15:00:24 +0530 you wrote:
> The default_settings entries for OBEX profiles (OPP, FTP, PBAP, MAS,
> MNS) have no imtu field, so ext_start_servers() creates the L2CAP
> listening socket without an explicit IMTU. This causes the socket to
> advertise the L2CAP minimum of 672 bytes in L2CAP_CONFIGURATION_RSP,
> limiting the peer's outgoing PDU size and degrading Rx throughput.
> 
> Add an imtu field to default_settings and set it to 32767 for all
> OBEX profiles that use L2CAP. Copy the value in ext_set_defaults()
> and apply it to the listening socket via bt_io_set() after
> bt_io_listen() succeeds.
> 
> [...]

Here is the summary with links:
  - [v3] profile: Set L2CAP IMTU for OBEX profile listeners
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=646014a6a246

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* RE: [BlueZ,v1] adapter: Fix using case sensitive strncmp for pattern match addresses
From: bluez.test.bot @ 2026-06-04 18:11 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz
In-Reply-To: <20260604171933.129638-1-luiz.dentz@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 826 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=1106123

---Test result---

Test Summary:
CheckPatch                    PASS      0.39 seconds
GitLint                       PASS      0.28 seconds
BuildEll                      PASS      21.08 seconds
BluezMake                     PASS      670.27 seconds
CheckSmatch                   PASS      352.24 seconds
bluezmakeextell               PASS      185.15 seconds
IncrementalBuild              PASS      665.77 seconds
ScanBuild                     PASS      1030.44 seconds



https://github.com/bluez/bluez/pull/2179

---
Regards,
Linux Bluetooth


^ permalink raw reply

* Re: [PATCH BlueZ v1] adapter: Fix using case sensitive strncmp for pattern match addresses
From: patchwork-bot+bluetooth @ 2026-06-04 18:30 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth
In-Reply-To: <20260604171933.129638-1-luiz.dentz@gmail.com>

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu,  4 Jun 2026 13:19:33 -0400 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> When matching discovery filter pattern with addresses shall be
> considered case insensitive since its binary format that can be
> printed using either upper or lower case for the range a-f/A-F.
> ---
>  src/adapter.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Here is the summary with links:
  - [BlueZ,v1] adapter: Fix using case sensitive strncmp for pattern match addresses
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=c6bc42d69661

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* RE: [v3] Bluetooth: Add SPDX id lines to some source files
From: bluez.test.bot @ 2026-06-04 18:42 UTC (permalink / raw)
  To: linux-bluetooth, Tim.Bird
In-Reply-To: <20260604170633.730139-1-tim.bird@sony.com>

[-- Attachment #1: Type: text/plain, Size: 2205 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=1106120

---Test result---

Test Summary:
CheckPatch                    PASS      14.08 seconds
VerifyFixes                   PASS      0.08 seconds
VerifySignedoff               PASS      0.08 seconds
GitLint                       PASS      0.22 seconds
SubjectPrefix                 PASS      0.07 seconds
BuildKernel                   PASS      28.01 seconds
CheckAllWarning               PASS      30.79 seconds
CheckSparse                   PASS      28.62 seconds
BuildKernel32                 PASS      26.74 seconds
TestRunnerSetup               PASS      574.60 seconds
TestRunner_l2cap-tester       PASS      59.92 seconds
TestRunner_iso-tester         PASS      73.94 seconds
TestRunner_bnep-tester        PASS      20.27 seconds
TestRunner_mgmt-tester        FAIL      221.58 seconds
TestRunner_rfcomm-tester      PASS      25.87 seconds
TestRunner_sco-tester         PASS      33.28 seconds
TestRunner_ioctl-tester       PASS      26.45 seconds
TestRunner_mesh-tester        FAIL      25.84 seconds
TestRunner_smp-tester         PASS      23.53 seconds
TestRunner_userchan-tester    PASS      20.26 seconds
TestRunner_6lowpan-tester     PASS      23.11 seconds
IncrementalBuild              PASS      25.43 seconds

Details
##############################
Test: TestRunner_mgmt-tester - FAIL
Desc: Run mgmt-tester with test-runner
Output:
Total: 494, Passed: 489 (99.0%), Failed: 1, Not Run: 4

Failed Test Cases
Read Exp Feature - Success                           Failed       0.247 seconds
##############################
Test: TestRunner_mesh-tester - FAIL
Desc: Run mesh-tester with test-runner
Output:
Total: 10, Passed: 8 (80.0%), Failed: 2, Not Run: 0

Failed Test Cases
Mesh - Send cancel - 1                               Timed out    1.944 seconds
Mesh - Send cancel - 2                               Timed out    1.986 seconds


https://github.com/bluez/bluetooth-next/pull/288

---
Regards,
Linux Bluetooth


^ permalink raw reply

* Re: [PATCH v3] Bluetooth: Add SPDX id lines to some source files
From: patchwork-bot+bluetooth @ 2026-06-04 19:30 UTC (permalink / raw)
  To: Tim Bird
  Cc: marcel, luiz.dentz, jannh, kuba, kiran.k, chharry, gustavo,
	prameela.j04cs, maxk, tim.bird, linux-bluetooth, linux-spdx,
	linux-kernel
In-Reply-To: <20260604170633.730139-1-tim.bird@sony.com>

Hello:

This patch was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu,  4 Jun 2026 11:06:33 -0600 you wrote:
> Many bluetooth source files are missing SPDX-License-Identifier
> lines. Add appropriate IDs to these files, and remove other
> license lines from the headers.
> 
> Leave the warranty disclaimer in files where the license ID is
> GPL-2.0 but the wording of the disclaimer is slightly different
> from that of the GPL v2 disclaimer.
> 
> [...]

Here is the summary with links:
  - [v3] Bluetooth: Add SPDX id lines to some source files
    https://git.kernel.org/bluetooth/bluetooth-next/c/ae283ad45b1d

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* [bluez/bluez] e60d07: build: Support libical 4.0
From: Luiz Augusto von Dentz @ 2026-06-04 19:33 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/master
  Home:   https://github.com/bluez/bluez
  Commit: e60d07255327db3fc4e3a28d7fcc792cd42c34d0
      https://github.com/bluez/bluez/commit/e60d07255327db3fc4e3a28d7fcc792cd42c34d0
  Author: Funda Wang <fundawang@yeah.net>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M configure.ac

  Log Message:
  -----------
  build: Support libical 4.0

libical 4.0 split off some vcal related functions to a separate shared
library, libicalvcal. As libicalvcal depends on libical itself, first
check for libicalvcal being available, and if it fails, check for
just libical.

Closes: https://github.com/bluez/bluez/issues/2090

Tested-by: Bastien Nocera <hadess@hadess.net>


  Commit: 646014a6a246fe99df27da12d2de7bcd2e04d0df
      https://github.com/bluez/bluez/commit/646014a6a246fe99df27da12d2de7bcd2e04d0df
  Author: Wei Deng <wei.deng@oss.qualcomm.com>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M src/profile.c

  Log Message:
  -----------
  profile: Set L2CAP IMTU for OBEX profile listeners

The default_settings entries for OBEX profiles (OPP, FTP, PBAP, MAS,
MNS) have no imtu field, so ext_start_servers() creates the L2CAP
listening socket without an explicit IMTU. This causes the socket to
advertise the L2CAP minimum of 672 bytes in L2CAP_CONFIGURATION_RSP,
limiting the peer's outgoing PDU size and degrading Rx throughput.

Add an imtu field to default_settings and set it to 32767 for all
OBEX profiles that use L2CAP. Copy the value in ext_set_defaults()
and apply it to the listening socket via bt_io_set() after
bt_io_listen() succeeds.


  Commit: c6bc42d696610bfae4e5dc193e1d39371c6b3e0c
      https://github.com/bluez/bluez/commit/c6bc42d696610bfae4e5dc193e1d39371c6b3e0c
  Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M src/adapter.c

  Log Message:
  -----------
  adapter: Fix using case sensitive strncmp for pattern match addresses

When matching discovery filter pattern with addresses shall be
considered case insensitive since its binary format that can be
printed using either upper or lower case for the range a-f/A-F.


Compare: https://github.com/bluez/bluez/compare/2a6968b40378...c6bc42d69661

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* [bluez/bluez]
From: BluezTestBot @ 2026-06-04 19:34 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1106123
  Home:   https://github.com/bluez/bluez

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* [bluez/bluez]
From: BluezTestBot @ 2026-06-04 19:34 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1105842
  Home:   https://github.com/bluez/bluez

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* [bluez/bluez]
From: BluezTestBot @ 2026-06-04 19:34 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1105837
  Home:   https://github.com/bluez/bluez

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* Re: [PATCH BlueZ] shared/rap: Add client ranging registration and notification parsing
From: patchwork-bot+bluetooth @ 2026-06-04 19:40 UTC (permalink / raw)
  To: Prathibha Madugonde
  Cc: linux-bluetooth, luiz.dentz, quic_mohamull, quic_hbandi,
	quic_anubhavg
In-Reply-To: <20260604085205.4135084-1-prathm@qti.qualcomm.com>

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu,  4 Jun 2026 14:22:05 +0530 you wrote:
> From: Prathibha Madugonde <prathibha.madugonde@oss.qualcomm.com>
> 
> Read the RAS Features characteristic to determine whether the remote
> device supports real-time ranging. If supported, register for real-time
> characteristic notifications using the reqtracker for the CS initiator
> role.
> 
> [...]

Here is the summary with links:
  - [BlueZ] shared/rap: Add client ranging registration and notification parsing
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=bc5713d69e1e

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* Re: [PATCH BlueZ v2] profiles/ranging: Read measured_freq_offset field-16 bit as per Core Spec
From: patchwork-bot+bluetooth @ 2026-06-04 19:40 UTC (permalink / raw)
  To: Prathibha Madugonde
  Cc: linux-bluetooth, luiz.dentz, quic_mohamull, quic_hbandi,
	quic_anubhavg
In-Reply-To: <20260604100233.4193077-1-prathm@qti.qualcomm.com>

Hello:

This patch was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Thu,  4 Jun 2026 15:32:33 +0530 you wrote:
> From: Prathibha Madugonde <prathibha.madugonde@oss.qualcomm.com>
> 
> Fix in V2:
> Fixed compilation issue.
> 
> ---
>  profiles/ranging/rap_hci.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Here is the summary with links:
  - [BlueZ,v2] profiles/ranging: Read measured_freq_offset field-16 bit as per Core Spec
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=42b2c543a70c

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply

* [bluez/bluez] bc5713: shared/rap: Add client ranging registration and no...
From: prathibhamadugonde @ 2026-06-04 21:13 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/master
  Home:   https://github.com/bluez/bluez
  Commit: bc5713d69e1e4ef87bc097ecbe941a2162bf0eac
      https://github.com/bluez/bluez/commit/bc5713d69e1e4ef87bc097ecbe941a2162bf0eac
  Author: Prathibha Madugonde <prathibha.madugonde@oss.qualcomm.com>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M src/shared/rap.c
    M src/shared/rap.h

  Log Message:
  -----------
  shared/rap: Add client ranging registration and notification parsing

Read the RAS Features characteristic to determine whether the remote
device supports real-time ranging. If supported, register for real-time
characteristic notifications using the reqtracker for the CS initiator
role.

Parse incoming segmented RAS ranging data notifications by accumulating
segments via iovec and parsing complete subevent headers and CS mode 0-3
step data, including IQ/tone PCT samples, once the last segment arrives.


  Commit: 42b2c543a70c882ed12efa06334588b0c45ae0f3
      https://github.com/bluez/bluez/commit/42b2c543a70c882ed12efa06334588b0c45ae0f3
  Author: Prathibha Madugonde <prathibha.madugonde@oss.qualcomm.com>
  Date:   2026-06-04 (Thu, 04 Jun 2026)

  Changed paths:
    M profiles/ranging/rap_hci.c

  Log Message:
  -----------
  profiles/ranging: Fix measured_freq_offset

As per Core spect it is 2 octects not 4.


Compare: https://github.com/bluez/bluez/compare/c6bc42d69661...42b2c543a70c

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* [bluez/bluez]
From: BluezTestBot @ 2026-06-04 21:14 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1105853
  Home:   https://github.com/bluez/bluez

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* [bluez/bluez]
From: BluezTestBot @ 2026-06-04 21:14 UTC (permalink / raw)
  To: linux-bluetooth

  Branch: refs/heads/1105806
  Home:   https://github.com/bluez/bluez

To unsubscribe from these emails, change your notification settings at https://github.com/bluez/bluez/settings/notifications

^ permalink raw reply

* [Bug 220703] Bluetooth connection is sporadic, quality is poor - halts and stammers with linux-firmware-network-20250917_1
From: bugzilla-daemon @ 2026-06-04 21:45 UTC (permalink / raw)
  To: linux-bluetooth
In-Reply-To: <bug-220703-62941@https.bugzilla.kernel.org/>

https://bugzilla.kernel.org/show_bug.cgi?id=220703

Bob Hepple (bob.hepple@gmail.com) changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |ANSWERED

--- Comment #2 from Bob Hepple (bob.hepple@gmail.com) ---
This appears to be resolved as of linux-6.18.32_1 and Firmware Version: 83-7.26

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are the assignee for the bug.

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox