diff options
author | Vinicius Costa Gomes <vinicius.gomes@openbossa.org> | 2012-08-23 20:32:43 -0400 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2012-08-27 11:07:18 -0400 |
commit | cc110922da7e902b62d18641a370fec01a9fa794 (patch) | |
tree | 3629d8b4b5197d50604ff0177eb77de96f0a9f99 /net/bluetooth | |
parent | 1fa6535faf055cd71311ab887e94fc234f04ee18 (diff) |
Bluetooth: Change signature of smp_conn_security()
To make it clear that it may be called from contexts that may not have
any knowledge of L2CAP, we change the connection parameter, to receive
a hci_conn.
This also makes it clear that it is checking the security of the link.
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/l2cap_core.c | 11 | ||||
-rw-r--r-- | net/bluetooth/l2cap_sock.c | 2 | ||||
-rw-r--r-- | net/bluetooth/smp.c | 4 |
3 files changed, 9 insertions, 8 deletions
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index daa149b7003c..4ea1710a4783 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c | |||
@@ -1199,14 +1199,15 @@ clean: | |||
1199 | static void l2cap_conn_ready(struct l2cap_conn *conn) | 1199 | static void l2cap_conn_ready(struct l2cap_conn *conn) |
1200 | { | 1200 | { |
1201 | struct l2cap_chan *chan; | 1201 | struct l2cap_chan *chan; |
1202 | struct hci_conn *hcon = conn->hcon; | ||
1202 | 1203 | ||
1203 | BT_DBG("conn %p", conn); | 1204 | BT_DBG("conn %p", conn); |
1204 | 1205 | ||
1205 | if (!conn->hcon->out && conn->hcon->type == LE_LINK) | 1206 | if (!hcon->out && hcon->type == LE_LINK) |
1206 | l2cap_le_conn_ready(conn); | 1207 | l2cap_le_conn_ready(conn); |
1207 | 1208 | ||
1208 | if (conn->hcon->out && conn->hcon->type == LE_LINK) | 1209 | if (hcon->out && hcon->type == LE_LINK) |
1209 | smp_conn_security(conn, conn->hcon->pending_sec_level); | 1210 | smp_conn_security(hcon, hcon->pending_sec_level); |
1210 | 1211 | ||
1211 | mutex_lock(&conn->chan_lock); | 1212 | mutex_lock(&conn->chan_lock); |
1212 | 1213 | ||
@@ -1219,8 +1220,8 @@ static void l2cap_conn_ready(struct l2cap_conn *conn) | |||
1219 | continue; | 1220 | continue; |
1220 | } | 1221 | } |
1221 | 1222 | ||
1222 | if (conn->hcon->type == LE_LINK) { | 1223 | if (hcon->type == LE_LINK) { |
1223 | if (smp_conn_security(conn, chan->sec_level)) | 1224 | if (smp_conn_security(hcon, chan->sec_level)) |
1224 | l2cap_chan_ready(chan); | 1225 | l2cap_chan_ready(chan); |
1225 | 1226 | ||
1226 | } else if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) { | 1227 | } else if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) { |
diff --git a/net/bluetooth/l2cap_sock.c b/net/bluetooth/l2cap_sock.c index b94abd30e6f9..45cb0b0dd2c7 100644 --- a/net/bluetooth/l2cap_sock.c +++ b/net/bluetooth/l2cap_sock.c | |||
@@ -615,7 +615,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, ch | |||
615 | break; | 615 | break; |
616 | } | 616 | } |
617 | 617 | ||
618 | if (smp_conn_security(conn, sec.level)) | 618 | if (smp_conn_security(conn->hcon, sec.level)) |
619 | break; | 619 | break; |
620 | sk->sk_state = BT_CONFIG; | 620 | sk->sk_state = BT_CONFIG; |
621 | chan->state = BT_CONFIG; | 621 | chan->state = BT_CONFIG; |
diff --git a/net/bluetooth/smp.c b/net/bluetooth/smp.c index 98ffc1b6a6fa..8c225ef349cd 100644 --- a/net/bluetooth/smp.c +++ b/net/bluetooth/smp.c | |||
@@ -760,9 +760,9 @@ static u8 smp_cmd_security_req(struct l2cap_conn *conn, struct sk_buff *skb) | |||
760 | return 0; | 760 | return 0; |
761 | } | 761 | } |
762 | 762 | ||
763 | int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level) | 763 | int smp_conn_security(struct hci_conn *hcon, __u8 sec_level) |
764 | { | 764 | { |
765 | struct hci_conn *hcon = conn->hcon; | 765 | struct l2cap_conn *conn = hcon->l2cap_data; |
766 | struct smp_chan *smp = conn->smp_chan; | 766 | struct smp_chan *smp = conn->smp_chan; |
767 | __u8 authreq; | 767 | __u8 authreq; |
768 | 768 | ||