aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/rfcomm
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2013-10-13 12:49:54 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2013-10-13 13:00:28 -0400
commit24bc10cad3a76a4fc0f96a7220d4fe02379826d2 (patch)
tree7dcd9040adfc7d652e314efda4575eaf13305a74 /net/bluetooth/rfcomm
parent4f1654e08464abad06487e173661cb73721d27a7 (diff)
Bluetooth: Access RFCOMM session addresses through L2CAP channel
The L2CAP socket structure does not contain the address information anymore. They need to be accessed through the L2CAP channel. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'net/bluetooth/rfcomm')
-rw-r--r--net/bluetooth/rfcomm/core.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index ca957d34b0c8..27e936a7ddd9 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -641,13 +641,13 @@ static struct rfcomm_session *rfcomm_session_get(bdaddr_t *src, bdaddr_t *dst)
641{ 641{
642 struct rfcomm_session *s; 642 struct rfcomm_session *s;
643 struct list_head *p, *n; 643 struct list_head *p, *n;
644 struct bt_sock *sk; 644 struct l2cap_chan *chan;
645 list_for_each_safe(p, n, &session_list) { 645 list_for_each_safe(p, n, &session_list) {
646 s = list_entry(p, struct rfcomm_session, list); 646 s = list_entry(p, struct rfcomm_session, list);
647 sk = bt_sk(s->sock->sk); 647 chan = l2cap_pi(s->sock->sk)->chan;
648 648
649 if ((!bacmp(src, BDADDR_ANY) || !bacmp(&sk->src, src)) && 649 if ((!bacmp(src, BDADDR_ANY) || !bacmp(&chan->src, src)) &&
650 !bacmp(&sk->dst, dst)) 650 !bacmp(&chan->dst, dst))
651 return s; 651 return s;
652 } 652 }
653 return NULL; 653 return NULL;
@@ -732,11 +732,11 @@ failed:
732 732
733void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst) 733void rfcomm_session_getaddr(struct rfcomm_session *s, bdaddr_t *src, bdaddr_t *dst)
734{ 734{
735 struct sock *sk = s->sock->sk; 735 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan;
736 if (src) 736 if (src)
737 bacpy(src, &bt_sk(sk)->src); 737 bacpy(src, &chan->src);
738 if (dst) 738 if (dst)
739 bacpy(dst, &bt_sk(sk)->dst); 739 bacpy(dst, &chan->dst);
740} 740}
741 741
742/* ---- RFCOMM frame sending ---- */ 742/* ---- RFCOMM frame sending ---- */
@@ -2112,12 +2112,11 @@ static int rfcomm_dlc_debugfs_show(struct seq_file *f, void *x)
2112 rfcomm_lock(); 2112 rfcomm_lock();
2113 2113
2114 list_for_each_entry(s, &session_list, list) { 2114 list_for_each_entry(s, &session_list, list) {
2115 struct l2cap_chan *chan = l2cap_pi(s->sock->sk)->chan;
2115 struct rfcomm_dlc *d; 2116 struct rfcomm_dlc *d;
2116 list_for_each_entry(d, &s->dlcs, list) { 2117 list_for_each_entry(d, &s->dlcs, list) {
2117 struct sock *sk = s->sock->sk;
2118
2119 seq_printf(f, "%pMR %pMR %ld %d %d %d %d\n", 2118 seq_printf(f, "%pMR %pMR %ld %d %d %d %d\n",
2120 &bt_sk(sk)->src, &bt_sk(sk)->dst, 2119 &chan->src, &chan->dst,
2121 d->state, d->dlci, d->mtu, 2120 d->state, d->dlci, d->mtu,
2122 d->rx_credits, d->tx_credits); 2121 d->rx_credits, d->tx_credits);
2123 } 2122 }