aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/af_bluetooth.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2013-11-04 14:51:28 -0500
committerJohn W. Linville <linville@tuxdriver.com>2013-11-04 14:51:28 -0500
commit87bc0728d462ae37841a550542829aa65a97e7c2 (patch)
tree266afb90f501b814c0a79f10a7afd86a6a33d631 /net/bluetooth/af_bluetooth.c
parentf421436a591d34fa5279b54a96ac07d70250cc8d (diff)
parent01925efdf7e03b4b803b5c9f985163d687f7f017 (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next into for-davem
Conflicts: drivers/net/wireless/brcm80211/brcmfmac/sdio_host.h
Diffstat (limited to 'net/bluetooth/af_bluetooth.c')
-rw-r--r--net/bluetooth/af_bluetooth.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
index e6e1278dca89..1f1a1118f489 100644
--- a/net/bluetooth/af_bluetooth.c
+++ b/net/bluetooth/af_bluetooth.c
@@ -30,7 +30,7 @@
30#include <net/bluetooth/bluetooth.h> 30#include <net/bluetooth/bluetooth.h>
31#include <linux/proc_fs.h> 31#include <linux/proc_fs.h>
32 32
33#define VERSION "2.16" 33#define VERSION "2.17"
34 34
35/* Bluetooth sockets */ 35/* Bluetooth sockets */
36#define BT_MAX_PROTO 8 36#define BT_MAX_PROTO 8
@@ -221,12 +221,12 @@ int bt_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
221 if (flags & (MSG_OOB)) 221 if (flags & (MSG_OOB))
222 return -EOPNOTSUPP; 222 return -EOPNOTSUPP;
223 223
224 msg->msg_namelen = 0;
225
226 skb = skb_recv_datagram(sk, flags, noblock, &err); 224 skb = skb_recv_datagram(sk, flags, noblock, &err);
227 if (!skb) { 225 if (!skb) {
228 if (sk->sk_shutdown & RCV_SHUTDOWN) 226 if (sk->sk_shutdown & RCV_SHUTDOWN) {
227 msg->msg_namelen = 0;
229 return 0; 228 return 0;
229 }
230 return err; 230 return err;
231 } 231 }
232 232
@@ -238,9 +238,16 @@ int bt_sock_recvmsg(struct kiocb *iocb, struct socket *sock,
238 238
239 skb_reset_transport_header(skb); 239 skb_reset_transport_header(skb);
240 err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied); 240 err = skb_copy_datagram_iovec(skb, 0, msg->msg_iov, copied);
241 if (err == 0) 241 if (err == 0) {
242 sock_recv_ts_and_drops(msg, sk, skb); 242 sock_recv_ts_and_drops(msg, sk, skb);
243 243
244 if (bt_sk(sk)->skb_msg_name)
245 bt_sk(sk)->skb_msg_name(skb, msg->msg_name,
246 &msg->msg_namelen);
247 else
248 msg->msg_namelen = 0;
249 }
250
244 skb_free_datagram(sk, skb); 251 skb_free_datagram(sk, skb);
245 252
246 return err ? : copied; 253 return err ? : copied;
@@ -604,7 +611,7 @@ static int bt_seq_show(struct seq_file *seq, void *v)
604 struct bt_sock_list *l = s->l; 611 struct bt_sock_list *l = s->l;
605 612
606 if (v == SEQ_START_TOKEN) { 613 if (v == SEQ_START_TOKEN) {
607 seq_puts(seq ,"sk RefCnt Rmem Wmem User Inode Src Dst Parent"); 614 seq_puts(seq ,"sk RefCnt Rmem Wmem User Inode Parent");
608 615
609 if (l->custom_seq_show) { 616 if (l->custom_seq_show) {
610 seq_putc(seq, ' '); 617 seq_putc(seq, ' ');
@@ -617,15 +624,13 @@ static int bt_seq_show(struct seq_file *seq, void *v)
617 struct bt_sock *bt = bt_sk(sk); 624 struct bt_sock *bt = bt_sk(sk);
618 625
619 seq_printf(seq, 626 seq_printf(seq,
620 "%pK %-6d %-6u %-6u %-6u %-6lu %pMR %pMR %-6lu", 627 "%pK %-6d %-6u %-6u %-6u %-6lu %-6lu",
621 sk, 628 sk,
622 atomic_read(&sk->sk_refcnt), 629 atomic_read(&sk->sk_refcnt),
623 sk_rmem_alloc_get(sk), 630 sk_rmem_alloc_get(sk),
624 sk_wmem_alloc_get(sk), 631 sk_wmem_alloc_get(sk),
625 from_kuid(seq_user_ns(seq), sock_i_uid(sk)), 632 from_kuid(seq_user_ns(seq), sock_i_uid(sk)),
626 sock_i_ino(sk), 633 sock_i_ino(sk),
627 &bt->src,
628 &bt->dst,
629 bt->parent? sock_i_ino(bt->parent): 0LU); 634 bt->parent? sock_i_ino(bt->parent): 0LU);
630 635
631 if (l->custom_seq_show) { 636 if (l->custom_seq_show) {