* [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges
@ 2016-01-26 22:19 Johan Hedberg
2016-01-26 22:19 ` [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values Johan Hedberg
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Johan Hedberg @ 2016-01-26 22:19 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
Having proper defines makes the code a bit readable, it also avoids
duplicating hard-coded values since these are also needed when
auto-allocating PSM values (in a subsequent patch).
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
include/net/bluetooth/l2cap.h | 6 ++++++
net/bluetooth/l2cap_sock.c | 6 +++---
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index 52899291f401..5ee3c689c863 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -252,6 +252,12 @@ struct l2cap_conn_rsp {
#define L2CAP_PSM_3DSP 0x0021
#define L2CAP_PSM_IPSP 0x0023 /* 6LoWPAN */
+#define L2CAP_PSM_DYN_START 0x1001
+#define L2CAP_PSM_DYN_END 0xffff
+#define L2CAP_PSM_AUTO_END 0x10ff
+#define L2CAP_PSM_LE_DYN_START 0x0080
+#define L2CAP_PSM_LE_DYN_END 0x00ff
+
/* channel identifier */
#define L2CAP_CID_SIGNALING 0x0001
#define L2CAP_CID_CONN_LESS 0x0002
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index 1bb551527044..f401592e5837 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -58,7 +58,7 @@ static int l2cap_validate_bredr_psm(u16 psm)
return -EINVAL;
/* Restrict usage of well-known PSMs */
- if (psm < 0x1001 && !capable(CAP_NET_BIND_SERVICE))
+ if (psm < L2CAP_PSM_DYN_START && !capable(CAP_NET_BIND_SERVICE))
return -EACCES;
return 0;
@@ -67,11 +67,11 @@ static int l2cap_validate_bredr_psm(u16 psm)
static int l2cap_validate_le_psm(u16 psm)
{
/* Valid LE_PSM ranges are defined only until 0x00ff */
- if (psm > 0x00ff)
+ if (psm > L2CAP_PSM_LE_DYN_END)
return -EINVAL;
/* Restrict fixed, SIG assigned PSM values to CAP_NET_BIND_SERVICE */
- if (psm <= 0x007f && !capable(CAP_NET_BIND_SERVICE))
+ if (psm < L2CAP_PSM_LE_DYN_START && !capable(CAP_NET_BIND_SERVICE))
return -EACCES;
return 0;
--
2.5.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values
2016-01-26 22:19 [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Johan Hedberg
@ 2016-01-26 22:19 ` Johan Hedberg
2016-01-27 15:26 ` Marcel Holtmann
2016-01-26 22:19 ` [PATCH 3/3] Bluetooth: L2CAP: Fix setting chan src info before adding PSM/CID Johan Hedberg
2016-01-27 15:26 ` [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Marcel Holtmann
2 siblings, 1 reply; 6+ messages in thread
From: Johan Hedberg @ 2016-01-26 22:19 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
The LE dynamic PSM range is different from BR/EDR (0x0080 - 0x00ff)
and doesn't have requirements relating to parity, so separate checks
are needed.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/l2cap_core.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 39a5149f3010..eb4f5f24cbe3 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -197,10 +197,20 @@ int l2cap_add_psm(struct l2cap_chan *chan, bdaddr_t *src, __le16 psm)
chan->sport = psm;
err = 0;
} else {
- u16 p;
+ u16 p, start, end, incr;
+
+ if (chan->src_type == BDADDR_BREDR) {
+ start = L2CAP_PSM_DYN_START;
+ end = L2CAP_PSM_AUTO_END;
+ incr = 2;
+ } else {
+ start = L2CAP_PSM_LE_DYN_START;
+ end = L2CAP_PSM_LE_DYN_END;
+ incr = 1;
+ }
err = -EINVAL;
- for (p = 0x1001; p < 0x1100; p += 2)
+ for (p = start; p <= end; p += incr)
if (!__l2cap_global_chan_by_addr(cpu_to_le16(p), src)) {
chan->psm = cpu_to_le16(p);
chan->sport = cpu_to_le16(p);
--
2.5.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] Bluetooth: L2CAP: Fix setting chan src info before adding PSM/CID
2016-01-26 22:19 [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Johan Hedberg
2016-01-26 22:19 ` [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values Johan Hedberg
@ 2016-01-26 22:19 ` Johan Hedberg
2016-01-27 15:26 ` Marcel Holtmann
2016-01-27 15:26 ` [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Marcel Holtmann
2 siblings, 1 reply; 6+ messages in thread
From: Johan Hedberg @ 2016-01-26 22:19 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
At least the l2cap_add_psm() routine depends on the source address
type being properly set to know what auto-allocation ranges to use, so
the assignment to l2cap_chan needs to happen before this.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/l2cap_sock.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c
index f401592e5837..e4cae72895a7 100644
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
@@ -125,6 +125,9 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
goto done;
}
+ bacpy(&chan->src, &la.l2_bdaddr);
+ chan->src_type = la.l2_bdaddr_type;
+
if (la.l2_cid)
err = l2cap_add_scid(chan, __le16_to_cpu(la.l2_cid));
else
@@ -156,9 +159,6 @@ static int l2cap_sock_bind(struct socket *sock, struct sockaddr *addr, int alen)
break;
}
- bacpy(&chan->src, &la.l2_bdaddr);
- chan->src_type = la.l2_bdaddr_type;
-
if (chan->psm && bdaddr_type_is_le(chan->src_type))
chan->mode = L2CAP_MODE_LE_FLOWCTL;
--
2.5.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values
2016-01-26 22:19 ` [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values Johan Hedberg
@ 2016-01-27 15:26 ` Marcel Holtmann
0 siblings, 0 replies; 6+ messages in thread
From: Marcel Holtmann @ 2016-01-27 15:26 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
Hi Johan,
> The LE dynamic PSM range is different from BR/EDR (0x0080 - 0x00ff)
> and doesn't have requirements relating to parity, so separate checks
> are needed.
>
> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
> ---
> net/bluetooth/l2cap_core.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges
2016-01-26 22:19 [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Johan Hedberg
2016-01-26 22:19 ` [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values Johan Hedberg
2016-01-26 22:19 ` [PATCH 3/3] Bluetooth: L2CAP: Fix setting chan src info before adding PSM/CID Johan Hedberg
@ 2016-01-27 15:26 ` Marcel Holtmann
2 siblings, 0 replies; 6+ messages in thread
From: Marcel Holtmann @ 2016-01-27 15:26 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
Hi Johan,
> Having proper defines makes the code a bit readable, it also avoids
> duplicating hard-coded values since these are also needed when
> auto-allocating PSM values (in a subsequent patch).
>
> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
> ---
> include/net/bluetooth/l2cap.h | 6 ++++++
> net/bluetooth/l2cap_sock.c | 6 +++---
> 2 files changed, 9 insertions(+), 3 deletions(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] Bluetooth: L2CAP: Fix setting chan src info before adding PSM/CID
2016-01-26 22:19 ` [PATCH 3/3] Bluetooth: L2CAP: Fix setting chan src info before adding PSM/CID Johan Hedberg
@ 2016-01-27 15:26 ` Marcel Holtmann
0 siblings, 0 replies; 6+ messages in thread
From: Marcel Holtmann @ 2016-01-27 15:26 UTC (permalink / raw)
To: Johan Hedberg; +Cc: linux-bluetooth
Hi Johan,
> At least the l2cap_add_psm() routine depends on the source address
> type being properly set to know what auto-allocation ranges to use, so
> the assignment to l2cap_chan needs to happen before this.
>
> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
> ---
> net/bluetooth/l2cap_sock.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
patch has been applied to bluetooth-next tree.
Regards
Marcel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2016-01-27 15:26 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-26 22:19 [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Johan Hedberg
2016-01-26 22:19 ` [PATCH 2/3] Bluetooth: L2CAP: Fix auto-allocating LE PSM values Johan Hedberg
2016-01-27 15:26 ` Marcel Holtmann
2016-01-26 22:19 ` [PATCH 3/3] Bluetooth: L2CAP: Fix setting chan src info before adding PSM/CID Johan Hedberg
2016-01-27 15:26 ` Marcel Holtmann
2016-01-27 15:26 ` [PATCH 1/3] Bluetooth: L2CAP: Introduce proper defines for PSM ranges Marcel Holtmann
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.