Skip to content

Commit

Permalink
Bluetooth: Change signature of smp_conn_security()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
vcgomes authored and Gustavo Padovan committed Aug 27, 2012
1 parent 1fa6535 commit cc11092
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion include/net/bluetooth/smp.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ struct smp_chan {
};

/* SMP Commands */
int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level);
int smp_conn_security(struct hci_conn *hcon, __u8 sec_level);
int smp_sig_channel(struct l2cap_conn *conn, struct sk_buff *skb);
int smp_distribute_keys(struct l2cap_conn *conn, __u8 force);
int smp_user_confirm_reply(struct hci_conn *conn, u16 mgmt_op, __le32 passkey);
Expand Down
11 changes: 6 additions & 5 deletions net/bluetooth/l2cap_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1199,14 +1199,15 @@ static void l2cap_le_conn_ready(struct l2cap_conn *conn)
static void l2cap_conn_ready(struct l2cap_conn *conn)
{
struct l2cap_chan *chan;
struct hci_conn *hcon = conn->hcon;

BT_DBG("conn %p", conn);

if (!conn->hcon->out && conn->hcon->type == LE_LINK)
if (!hcon->out && hcon->type == LE_LINK)
l2cap_le_conn_ready(conn);

if (conn->hcon->out && conn->hcon->type == LE_LINK)
smp_conn_security(conn, conn->hcon->pending_sec_level);
if (hcon->out && hcon->type == LE_LINK)
smp_conn_security(hcon, hcon->pending_sec_level);

mutex_lock(&conn->chan_lock);

Expand All @@ -1219,8 +1220,8 @@ static void l2cap_conn_ready(struct l2cap_conn *conn)
continue;
}

if (conn->hcon->type == LE_LINK) {
if (smp_conn_security(conn, chan->sec_level))
if (hcon->type == LE_LINK) {
if (smp_conn_security(hcon, chan->sec_level))
l2cap_chan_ready(chan);

} else if (chan->chan_type != L2CAP_CHAN_CONN_ORIENTED) {
Expand Down
2 changes: 1 addition & 1 deletion net/bluetooth/l2cap_sock.c
Original file line number Diff line number Diff line change
Expand Up @@ -615,7 +615,7 @@ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, ch
break;
}

if (smp_conn_security(conn, sec.level))
if (smp_conn_security(conn->hcon, sec.level))
break;
sk->sk_state = BT_CONFIG;
chan->state = BT_CONFIG;
Expand Down
4 changes: 2 additions & 2 deletions net/bluetooth/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -760,9 +760,9 @@ static u8 smp_cmd_security_req(struct l2cap_conn *conn, struct sk_buff *skb)
return 0;
}

int smp_conn_security(struct l2cap_conn *conn, __u8 sec_level)
int smp_conn_security(struct hci_conn *hcon, __u8 sec_level)
{
struct hci_conn *hcon = conn->hcon;
struct l2cap_conn *conn = hcon->l2cap_data;
struct smp_chan *smp = conn->smp_chan;
__u8 authreq;

Expand Down

0 comments on commit cc11092

Please sign in to comment.