All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Herrmann <dh.herrmann@googlemail.com>
To: linux-bluetooth@vger.kernel.org
Cc: marcel@holtmann.org, gustavo@padovan.org,
	David Herrmann <dh.herrmann@googlemail.com>
Subject: [PATCH 2/3] Bluetooth: Replace unsafe batostr() calls with ba2str()
Date: Tue,  8 May 2012 15:28:25 +0200	[thread overview]
Message-ID: <1336483706-1533-2-git-send-email-dh.herrmann@googlemail.com> (raw)
In-Reply-To: <1336483706-1533-1-git-send-email-dh.herrmann@googlemail.com>

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@sipsolutions.net>
Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
---
 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

  reply	other threads:[~2012-05-08 13:28 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-08 13:28 [PATCH 1/3] Bluetooth: Introduce ba2str() David Herrmann
2012-05-08 13:28 ` David Herrmann [this message]
2012-05-08 13:49   ` [PATCH 2/3] Bluetooth: Replace unsafe batostr() calls with ba2str() Andrei Emeltchenko
2012-05-08 14:02     ` David Herrmann
2012-05-08 14:34       ` Andrei Emeltchenko
2012-05-08 13:28 ` [PATCH 3/3] Bluetooth: Remove batostr() David Herrmann
2012-05-08 14:30   ` Ulisses Furquim
2012-05-08 14:54     ` Marcel Holtmann
2012-05-08 18:11       ` Ulisses Furquim
2012-05-09  9:02         ` Andrei Emeltchenko
2012-05-09 11:17           ` Ulisses Furquim
2012-05-09 13:10             ` Gustavo Padovan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1336483706-1533-2-git-send-email-dh.herrmann@googlemail.com \
    --to=dh.herrmann@googlemail.com \
    --cc=gustavo@padovan.org \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcel@holtmann.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.