[PATCH 2/3] Bluetooth: Replace unsafe batostr() calls with ba2str()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



batostr() is not thread-safe so we _must_ use ba2str() in all un-protected
paths (which is pretty everywhere in our source).

All places where BT_DBG() is used we call ba2str() as parameter so the
static buffer is unused if debug is disabled during compilation and gcc
should be clever enough to remove the buffers.

Reported-by: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
Signed-off-by: David Herrmann <dh.herrmann@xxxxxxxxxxxxxx>
---
 net/bluetooth/bnep/core.c   |    4 +++-
 net/bluetooth/cmtp/core.c   |    3 ++-
 net/bluetooth/hci_conn.c    |    9 ++++++---
 net/bluetooth/hci_core.c    |   32 ++++++++++++++++++++++----------
 net/bluetooth/hci_event.c   |   17 +++++++++++------
 net/bluetooth/hci_sysfs.c   |   14 ++++++++++----
 net/bluetooth/hidp/core.c   |    4 ++--
 net/bluetooth/l2cap_core.c  |   23 ++++++++++++++---------
 net/bluetooth/rfcomm/core.c |   15 +++++++++------
 net/bluetooth/rfcomm/sock.c |   10 ++++++----
 net/bluetooth/rfcomm/tty.c  |   10 +++++++---
 net/bluetooth/sco.c         |   20 ++++++++++++++------
 12 files changed, 106 insertions(+), 55 deletions(-)

diff --git a/net/bluetooth/bnep/core.c b/net/bluetooth/bnep/core.c
index a779ec7..03a3cb3 100644
--- a/net/bluetooth/bnep/core.c
+++ b/net/bluetooth/bnep/core.c
@@ -166,6 +166,7 @@ static int bnep_ctrl_set_netfilter(struct bnep_session *s, __be16 *data, int len
 static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len)
 {
 	int n;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
 	if (len < 2)
 		return -EILSEQ;
@@ -200,7 +201,8 @@ static int bnep_ctrl_set_mcfilter(struct bnep_session *s, u8 *data, int len)
 			data += ETH_ALEN;
 
 			BT_DBG("mc filter %s -> %s",
-				batostr((void *) a1), batostr((void *) a2));
+				ba2str((void *) a1, babuf1),
+				ba2str((void *) a2, babuf2));
 
 			/* Iterate from a1 to a2 */
 			set_bit(bnep_mc_hash(a1), (ulong *) &s->mc_filter);
diff --git a/net/bluetooth/cmtp/core.c b/net/bluetooth/cmtp/core.c
index 6c9c1fd..30d437f 100644
--- a/net/bluetooth/cmtp/core.c
+++ b/net/bluetooth/cmtp/core.c
@@ -331,6 +331,7 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
 {
 	struct cmtp_session *session, *s;
 	int i, err;
+	char babuf[BDADDR_STRLEN];
 
 	BT_DBG("");
 
@@ -353,7 +354,7 @@ int cmtp_add_connection(struct cmtp_connadd_req *req, struct socket *sock)
 
 	BT_DBG("mtu %d", session->mtu);
 
-	sprintf(session->name, "%s", batostr(&bt_sk(sock->sk)->dst));
+	ba2str(&bt_sk(sock->sk)->dst, session->name);
 
 	session->sock  = sock;
 	session->state = BT_CONFIG;
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 3f18a6e..bc7e3a2 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -333,8 +333,9 @@ static void hci_conn_auto_accept(unsigned long arg)
 struct hci_conn *hci_conn_add(struct hci_dev *hdev, int type, bdaddr_t *dst)
 {
 	struct hci_conn *conn;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("%s dst %s", hdev->name, batostr(dst));
+	BT_DBG("%s dst %s", hdev->name, ba2str(dst, babuf));
 
 	conn = kzalloc(sizeof(struct hci_conn), GFP_KERNEL);
 	if (!conn)
@@ -448,8 +449,9 @@ struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src)
 {
 	int use_src = bacmp(src, BDADDR_ANY);
 	struct hci_dev *hdev = NULL, *d;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
-	BT_DBG("%s -> %s", batostr(src), batostr(dst));
+	BT_DBG("%s -> %s", ba2str(src, babuf1), ba2str(dst, babuf2));
 
 	read_lock(&hci_dev_list_lock);
 
@@ -489,8 +491,9 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst,
 	struct hci_conn *acl;
 	struct hci_conn *sco;
 	struct hci_conn *le;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("%s dst %s", hdev->name, batostr(dst));
+	BT_DBG("%s dst %s", hdev->name, ba2str(dst, babuf));
 
 	if (type == LE_LINK) {
 		le = hci_conn_hash_lookup_ba(hdev, LE_LINK, dst);
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index a492b374..e9735d3 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -421,8 +421,9 @@ struct inquiry_entry *hci_inquiry_cache_lookup(struct hci_dev *hdev, bdaddr_t *b
 {
 	struct discovery_state *cache = &hdev->discovery;
 	struct inquiry_entry *e;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("cache %p, %s", cache, batostr(bdaddr));
+	BT_DBG("cache %p, %s", cache, ba2str(bdaddr, babuf));
 
 	list_for_each_entry(e, &cache->all, all) {
 		if (!bacmp(&e->data.bdaddr, bdaddr))
@@ -437,8 +438,9 @@ struct inquiry_entry *hci_inquiry_cache_lookup_unknown(struct hci_dev *hdev,
 {
 	struct discovery_state *cache = &hdev->discovery;
 	struct inquiry_entry *e;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("cache %p, %s", cache, batostr(bdaddr));
+	BT_DBG("cache %p, %s", cache, ba2str(bdaddr, babuf));
 
 	list_for_each_entry(e, &cache->unknown, list) {
 		if (!bacmp(&e->data.bdaddr, bdaddr))
@@ -454,8 +456,10 @@ struct inquiry_entry *hci_inquiry_cache_lookup_resolve(struct hci_dev *hdev,
 {
 	struct discovery_state *cache = &hdev->discovery;
 	struct inquiry_entry *e;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("cache %p bdaddr %s state %d", cache, batostr(bdaddr), state);
+	BT_DBG("cache %p bdaddr %s state %d", cache, ba2str(bdaddr, babuf),
+	       state);
 
 	list_for_each_entry(e, &cache->resolve, list) {
 		if (!bacmp(bdaddr, BDADDR_ANY) && e->name_state == state)
@@ -491,8 +495,9 @@ bool hci_inquiry_cache_update(struct hci_dev *hdev, struct inquiry_data *data,
 {
 	struct discovery_state *cache = &hdev->discovery;
 	struct inquiry_entry *ie;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("cache %p, %s", cache, batostr(&data->bdaddr));
+	BT_DBG("cache %p, %s", cache, ba2str(&data->bdaddr, babuf));
 
 	if (ssp)
 		*ssp = data->ssp_mode;
@@ -1264,6 +1269,7 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
 	struct link_key *key, *old_key;
 	u8 old_key_type;
 	bool persistent;
+	char babuf[BDADDR_STRLEN];
 
 	old_key = hci_find_link_key(hdev, bdaddr);
 	if (old_key) {
@@ -1277,7 +1283,8 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
 		list_add(&key->list, &hdev->link_keys);
 	}
 
-	BT_DBG("%s key for %s type %u", hdev->name, batostr(bdaddr), type);
+	BT_DBG("%s key for %s type %u", hdev->name, ba2str(bdaddr, babuf),
+	       type);
 
 	/* Some buggy controller combinations generate a changed
 	 * combination key for legacy pairing even when there's no
@@ -1352,12 +1359,13 @@ int hci_add_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 addr_type, u8 type,
 int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
 {
 	struct link_key *key;
+	char babuf[BDADDR_STRLEN];
 
 	key = hci_find_link_key(hdev, bdaddr);
 	if (!key)
 		return -ENOENT;
 
-	BT_DBG("%s removing %s", hdev->name, batostr(bdaddr));
+	BT_DBG("%s removing %s", hdev->name, ba2str(bdaddr, babuf));
 
 	list_del(&key->list);
 	kfree(key);
@@ -1368,12 +1376,13 @@ int hci_remove_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
 int hci_remove_ltk(struct hci_dev *hdev, bdaddr_t *bdaddr)
 {
 	struct smp_ltk *k, *tmp;
+	char babuf[BDADDR_STRLEN];
 
 	list_for_each_entry_safe(k, tmp, &hdev->long_term_keys, list) {
 		if (bacmp(bdaddr, &k->bdaddr))
 			continue;
 
-		BT_DBG("%s removing %s", hdev->name, batostr(bdaddr));
+		BT_DBG("%s removing %s", hdev->name, ba2str(bdaddr, babuf));
 
 		list_del(&k->list);
 		kfree(k);
@@ -1407,12 +1416,13 @@ struct oob_data *hci_find_remote_oob_data(struct hci_dev *hdev,
 int hci_remove_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr)
 {
 	struct oob_data *data;
+	char babuf[BDADDR_STRLEN];
 
 	data = hci_find_remote_oob_data(hdev, bdaddr);
 	if (!data)
 		return -ENOENT;
 
-	BT_DBG("%s removing %s", hdev->name, batostr(bdaddr));
+	BT_DBG("%s removing %s", hdev->name, ba2str(bdaddr, babuf));
 
 	list_del(&data->list);
 	kfree(data);
@@ -1436,6 +1446,7 @@ int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 *hash,
 			    u8 *randomizer)
 {
 	struct oob_data *data;
+	char babuf[BDADDR_STRLEN];
 
 	data = hci_find_remote_oob_data(hdev, bdaddr);
 
@@ -1451,7 +1462,7 @@ int hci_add_remote_oob_data(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 *hash,
 	memcpy(data->hash, hash, sizeof(data->hash));
 	memcpy(data->randomizer, randomizer, sizeof(data->randomizer));
 
-	BT_DBG("%s for %s", hdev->name, batostr(bdaddr));
+	BT_DBG("%s for %s", hdev->name, ba2str(bdaddr, babuf));
 
 	return 0;
 }
@@ -2303,6 +2314,7 @@ static inline void hci_link_tx_to(struct hci_dev *hdev, __u8 type)
 {
 	struct hci_conn_hash *h = &hdev->conn_hash;
 	struct hci_conn *c;
+	char babuf[BDADDR_STRLEN];
 
 	BT_ERR("%s link tx timeout", hdev->name);
 
@@ -2312,7 +2324,7 @@ static inline void hci_link_tx_to(struct hci_dev *hdev, __u8 type)
 	list_for_each_entry_rcu(c, &h->list, list) {
 		if (c->type == type && c->sent) {
 			BT_ERR("%s killing stalled connection %s",
-				hdev->name, batostr(&c->dst));
+				hdev->name, ba2str(&c->dst, babuf));
 			hci_acl_disconn(c, 0x13);
 		}
 	}
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index b739baf..de65863 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -1207,6 +1207,7 @@ static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
 {
 	struct hci_cp_create_conn *cp;
 	struct hci_conn *conn;
+	char babuf[BDADDR_STRLEN];
 
 	BT_DBG("%s status 0x%x", hdev->name, status);
 
@@ -1218,7 +1219,8 @@ static inline void hci_cs_create_conn(struct hci_dev *hdev, __u8 status)
 
 	conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &cp->bdaddr);
 
-	BT_DBG("%s bdaddr %s conn %p", hdev->name, batostr(&cp->bdaddr), conn);
+	BT_DBG("%s bdaddr %s conn %p", hdev->name, ba2str(&cp->bdaddr, babuf),
+	       conn);
 
 	if (status) {
 		if (conn && conn->state == BT_CONNECT) {
@@ -1626,6 +1628,7 @@ static void hci_cs_le_create_conn(struct hci_dev *hdev, __u8 status)
 {
 	struct hci_cp_le_create_conn *cp;
 	struct hci_conn *conn;
+	char babuf[BDADDR_STRLEN];
 
 	BT_DBG("%s status 0x%x", hdev->name, status);
 
@@ -1637,8 +1640,8 @@ static void hci_cs_le_create_conn(struct hci_dev *hdev, __u8 status)
 
 	conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, &cp->peer_addr);
 
-	BT_DBG("%s bdaddr %s conn %p", hdev->name, batostr(&cp->peer_addr),
-		conn);
+	BT_DBG("%s bdaddr %s conn %p", hdev->name,
+	       ba2str(&cp->peer_addr, babuf), conn);
 
 	if (status) {
 		if (conn && conn->state == BT_CONNECT) {
@@ -1827,9 +1830,10 @@ static inline void hci_conn_request_evt(struct hci_dev *hdev, struct sk_buff *sk
 {
 	struct hci_ev_conn_request *ev = (void *) skb->data;
 	int mask = hdev->link_mode;
+	char babuf[BDADDR_STRLEN];
 
 	BT_DBG("%s bdaddr %s type 0x%x", hdev->name,
-					batostr(&ev->bdaddr), ev->link_type);
+	       ba2str(&ev->bdaddr, babuf), ev->link_type);
 
 	mask |= hci_proto_connect_ind(hdev, &ev->bdaddr, ev->link_type);
 
@@ -2671,6 +2675,7 @@ static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff
 	struct hci_cp_link_key_reply cp;
 	struct hci_conn *conn;
 	struct link_key *key;
+	char babuf[BDADDR_STRLEN];
 
 	BT_DBG("%s", hdev->name);
 
@@ -2682,12 +2687,12 @@ static inline void hci_link_key_request_evt(struct hci_dev *hdev, struct sk_buff
 	key = hci_find_link_key(hdev, &ev->bdaddr);
 	if (!key) {
 		BT_DBG("%s link key not found for %s", hdev->name,
-							batostr(&ev->bdaddr));
+		       ba2str(&ev->bdaddr, babuf));
 		goto not_found;
 	}
 
 	BT_DBG("%s found key type %u for %s", hdev->name, key->type,
-							batostr(&ev->bdaddr));
+	       ba2str(&ev->bdaddr, babuf));
 
 	if (!test_bit(HCI_DEBUG_KEYS, &hdev->dev_flags) &&
 				key->type == HCI_LK_DEBUG_COMBINATION) {
diff --git a/net/bluetooth/hci_sysfs.c b/net/bluetooth/hci_sysfs.c
index 937f318..e457ea3 100644
--- a/net/bluetooth/hci_sysfs.c
+++ b/net/bluetooth/hci_sysfs.c
@@ -40,7 +40,9 @@ static ssize_t show_link_type(struct device *dev, struct device_attribute *attr,
 static ssize_t show_link_address(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	struct hci_conn *conn = to_hci_conn(dev);
-	return sprintf(buf, "%s\n", batostr(&conn->dst));
+	char babuf[BDADDR_STRLEN];
+
+	return sprintf(buf, "%s\n", ba2str(&conn->dst, babuf));
 }
 
 static ssize_t show_link_features(struct device *dev, struct device_attribute *attr, char *buf)
@@ -220,7 +222,9 @@ static ssize_t show_class(struct device *dev, struct device_attribute *attr, cha
 static ssize_t show_address(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	struct hci_dev *hdev = to_hci_dev(dev);
-	return sprintf(buf, "%s\n", batostr(&hdev->bdaddr));
+	char babuf[BDADDR_STRLEN];
+
+	return sprintf(buf, "%s\n", ba2str(&hdev->bdaddr, babuf));
 }
 
 static ssize_t show_features(struct device *dev, struct device_attribute *attr, char *buf)
@@ -384,13 +388,14 @@ static int inquiry_cache_show(struct seq_file *f, void *p)
 	struct hci_dev *hdev = f->private;
 	struct discovery_state *cache = &hdev->discovery;
 	struct inquiry_entry *e;
+	char babuf[BDADDR_STRLEN];
 
 	hci_dev_lock(hdev);
 
 	list_for_each_entry(e, &cache->all, all) {
 		struct inquiry_data *data = &e->data;
 		seq_printf(f, "%s %d %d %d 0x%.2x%.2x%.2x 0x%.4x %d %d %u\n",
-			   batostr(&data->bdaddr),
+			   ba2str(&data->bdaddr, babuf),
 			   data->pscan_rep_mode, data->pscan_period_mode,
 			   data->pscan_mode, data->dev_class[2],
 			   data->dev_class[1], data->dev_class[0],
@@ -419,11 +424,12 @@ static int blacklist_show(struct seq_file *f, void *p)
 {
 	struct hci_dev *hdev = f->private;
 	struct bdaddr_list *b;
+	char babuf[BDADDR_STRLEN];
 
 	hci_dev_lock(hdev);
 
 	list_for_each_entry(b, &hdev->blacklist, list)
-		seq_printf(f, "%s\n", batostr(&b->bdaddr));
+		seq_printf(f, "%s\n", ba2str(&b->bdaddr, babuf));
 
 	hci_dev_unlock(hdev);
 
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index d478be1..9625272 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -950,8 +950,8 @@ static int hidp_setup_hid(struct hidp_session *session,
 	hid->country = req->country;
 
 	strncpy(hid->name, req->name, 128);
-	strncpy(hid->phys, batostr(&bt_sk(session->ctrl_sock->sk)->src), 64);
-	strncpy(hid->uniq, batostr(&bt_sk(session->ctrl_sock->sk)->dst), 64);
+	ba2str(&bt_sk(session->ctrl_sock->sk)->src, hid->phys);
+	ba2str(&bt_sk(session->ctrl_sock->sk)->dst, hid->uniq);
 
 	hid->dev.parent = &session->conn->dev;
 	hid->ll_driver = &hidp_hid_driver;
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 66a1a55..c91e24f 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -1396,9 +1396,10 @@ int l2cap_chan_connect(struct l2cap_chan *chan, __le16 psm, u16 cid,
 	struct hci_dev *hdev;
 	__u8 auth_type;
 	int err;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
-	BT_DBG("%s -> %s (type %u) psm 0x%2.2x", batostr(src), batostr(dst),
-	       dst_type, __le16_to_cpu(chan->psm));
+	BT_DBG("%s -> %s (type %u) psm 0x%2.2x", ba2str(src, babuf1),
+	       ba2str(dst, babuf2), dst_type, __le16_to_cpu(chan->psm));
 
 	hdev = hci_get_route(dst, src);
 	if (!hdev)
@@ -4794,8 +4795,9 @@ int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
 {
 	int exact = 0, lm1 = 0, lm2 = 0;
 	struct l2cap_chan *c;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
+	BT_DBG("hdev %s, bdaddr %s", hdev->name, ba2str(bdaddr, babuf));
 
 	/* Find listening sockets and check their link_mode */
 	read_lock(&chan_list_lock);
@@ -4824,8 +4826,10 @@ int l2cap_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
 int l2cap_connect_cfm(struct hci_conn *hcon, u8 status)
 {
 	struct l2cap_conn *conn;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
+	BT_DBG("hcon %p bdaddr %s status %d", hcon, ba2str(&hcon->dst, babuf),
+	       status);
 
 	if (!status) {
 		conn = l2cap_conn_add(hcon, status);
@@ -5082,6 +5086,7 @@ drop:
 static int l2cap_debugfs_show(struct seq_file *f, void *p)
 {
 	struct l2cap_chan *c;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
 	read_lock(&chan_list_lock);
 
@@ -5089,11 +5094,11 @@ static int l2cap_debugfs_show(struct seq_file *f, void *p)
 		struct sock *sk = c->sk;
 
 		seq_printf(f, "%s %s %d %d 0x%4.4x 0x%4.4x %d %d %d %d\n",
-					batostr(&bt_sk(sk)->src),
-					batostr(&bt_sk(sk)->dst),
-					c->state, __le16_to_cpu(c->psm),
-					c->scid, c->dcid, c->imtu, c->omtu,
-					c->sec_level, c->mode);
+			   ba2str(&bt_sk(sk)->src, babuf1),
+			   ba2str(&bt_sk(sk)->dst, babuf2),
+			   c->state, __le16_to_cpu(c->psm),
+			   c->scid, c->dcid, c->imtu, c->omtu,
+			   c->sec_level, c->mode);
 	}
 
 	read_unlock(&chan_list_lock);
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 8a60238..8dc2ad9 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -390,9 +390,10 @@ static int __rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst,
 	struct rfcomm_session *s;
 	int err = 0;
 	u8 dlci;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
 	BT_DBG("dlc %p state %ld %s %s channel %d",
-			d, d->state, batostr(src), batostr(dst), channel);
+	       d, d->state, ba2str(src, babuf1), ba2str(dst, babuf2), channel);
 
 	if (channel < 1 || channel > 30)
 		return -EINVAL;
@@ -689,8 +690,9 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src,
 	struct sockaddr_l2 addr;
 	struct socket *sock;
 	struct sock *sk;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
-	BT_DBG("%s %s", batostr(src), batostr(dst));
+	BT_DBG("%s %s", ba2str(src, babuf1), ba2str(dst, babuf2));
 
 	*err = rfcomm_l2sock_create(&sock);
 	if (*err < 0)
@@ -2131,6 +2133,7 @@ static struct hci_cb rfcomm_cb = {
 static int rfcomm_dlc_debugfs_show(struct seq_file *f, void *x)
 {
 	struct rfcomm_session *s;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
 	rfcomm_lock();
 
@@ -2140,10 +2143,10 @@ static int rfcomm_dlc_debugfs_show(struct seq_file *f, void *x)
 			struct sock *sk = s->sock->sk;
 
 			seq_printf(f, "%s %s %ld %d %d %d %d\n",
-						batostr(&bt_sk(sk)->src),
-						batostr(&bt_sk(sk)->dst),
-						d->state, d->dlci, d->mtu,
-						d->rx_credits, d->tx_credits);
+				   ba2str(&bt_sk(sk)->src, babuf1),
+				   ba2str(&bt_sk(sk)->dst, babuf2),
+				   d->state, d->dlci, d->mtu,
+				   d->rx_credits, d->tx_credits);
 		}
 	}
 
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index a55a43e..149fc89 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -351,8 +351,9 @@ static int rfcomm_sock_bind(struct socket *sock, struct sockaddr *addr, int addr
 	struct sockaddr_rc *sa = (struct sockaddr_rc *) addr;
 	struct sock *sk = sock->sk;
 	int err = 0;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("sk %p %s", sk, batostr(&sa->rc_bdaddr));
+	BT_DBG("sk %p %s", sk, ba2str(&sa->rc_bdaddr, babuf));
 
 	if (!addr || addr->sa_family != AF_BLUETOOTH)
 		return -EINVAL;
@@ -982,14 +983,15 @@ static int rfcomm_sock_debugfs_show(struct seq_file *f, void *p)
 {
 	struct sock *sk;
 	struct hlist_node *node;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
 	read_lock(&rfcomm_sk_list.lock);
 
 	sk_for_each(sk, node, &rfcomm_sk_list.head) {
 		seq_printf(f, "%s %s %d %d\n",
-				batostr(&bt_sk(sk)->src),
-				batostr(&bt_sk(sk)->dst),
-				sk->sk_state, rfcomm_pi(sk)->channel);
+			   ba2str(&bt_sk(sk)->src, babuf1),
+			   ba2str(&bt_sk(sk)->dst, babuf2),
+			   sk->sk_state, rfcomm_pi(sk)->channel);
 	}
 
 	read_unlock(&rfcomm_sk_list.lock);
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 4bf54b3..bbbbd19 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -181,7 +181,9 @@ static struct device *rfcomm_get_device(struct rfcomm_dev *dev)
 static ssize_t show_address(struct device *tty_dev, struct device_attribute *attr, char *buf)
 {
 	struct rfcomm_dev *dev = dev_get_drvdata(tty_dev);
-	return sprintf(buf, "%s\n", batostr(&dev->dst));
+	char babuf[BDADDR_STRLEN];
+
+	return sprintf(buf, "%s\n", ba2str(&dev->dst, babuf));
 }
 
 static ssize_t show_channel(struct device *tty_dev, struct device_attribute *attr, char *buf)
@@ -672,6 +674,7 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
 	struct rfcomm_dev *dev;
 	struct rfcomm_dlc *dlc;
 	int err, id;
+	char babuf[BDADDR_STRLEN];
 
 	id = tty->index;
 
@@ -685,8 +688,9 @@ static int rfcomm_tty_open(struct tty_struct *tty, struct file *filp)
 	if (!dev)
 		return -ENODEV;
 
-	BT_DBG("dev %p dst %s channel %d opened %d", dev, batostr(&dev->dst),
-				dev->channel, atomic_read(&dev->opened));
+	BT_DBG("dev %p dst %s channel %d opened %d", dev,
+	       ba2str(&dev->dst, babuf), dev->channel,
+	       atomic_read(&dev->opened));
 
 	if (atomic_inc_return(&dev->opened) > 1)
 		return 0;
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index cbdd313..8f083f0 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -179,8 +179,9 @@ static int sco_connect(struct sock *sk)
 	struct hci_conn *hcon;
 	struct hci_dev  *hdev;
 	int err, type;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
-	BT_DBG("%s -> %s", batostr(src), batostr(dst));
+	BT_DBG("%s -> %s", ba2str(src, babuf1), ba2str(dst, babuf2));
 
 	hdev = hci_get_route(dst, src);
 	if (!hdev)
@@ -467,8 +468,9 @@ static int sco_sock_bind(struct socket *sock, struct sockaddr *addr, int addr_le
 	struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
 	struct sock *sk = sock->sk;
 	int err = 0;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("sk %p %s", sk, batostr(&sa->sco_bdaddr));
+	BT_DBG("sk %p %s", sk, ba2str(&sa->sco_bdaddr, babuf));
 
 	if (!addr || addr->sa_family != AF_BLUETOOTH)
 		return -EINVAL;
@@ -910,8 +912,9 @@ int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
 	register struct sock *sk;
 	struct hlist_node *node;
 	int lm = 0;
+	char babuf[BDADDR_STRLEN];
 
-	BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));
+	BT_DBG("hdev %s, bdaddr %s", hdev->name, ba2str(bdaddr, babuf));
 
 	/* Find listening sockets */
 	read_lock(&sco_sk_list.lock);
@@ -932,7 +935,11 @@ int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)
 
 int sco_connect_cfm(struct hci_conn *hcon, __u8 status)
 {
-	BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status);
+	char babuf[BDADDR_STRLEN];
+
+	BT_DBG("hcon %p bdaddr %s status %d", hcon, ba2str(&hcon->dst, babuf),
+	       status);
+
 	if (!status) {
 		struct sco_conn *conn;
 
@@ -976,12 +983,13 @@ static int sco_debugfs_show(struct seq_file *f, void *p)
 {
 	struct sock *sk;
 	struct hlist_node *node;
+	char babuf1[BDADDR_STRLEN], babuf2[BDADDR_STRLEN];
 
 	read_lock(&sco_sk_list.lock);
 
 	sk_for_each(sk, node, &sco_sk_list.head) {
-		seq_printf(f, "%s %s %d\n", batostr(&bt_sk(sk)->src),
-				batostr(&bt_sk(sk)->dst), sk->sk_state);
+		seq_printf(f, "%s %s %d\n", ba2str(&bt_sk(sk)->src, babuf1),
+			   ba2str(&bt_sk(sk)->dst, babuf2), sk->sk_state);
 	}
 
 	read_unlock(&sco_sk_list.lock);
-- 
1.7.10.1

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux