Merge tag 'mailbox-v5.5' of git://git.linaro.org/landing-teams/working/fujitsu/integr...
[linux-2.6-microblaze.git] / net / bluetooth / hci_sock.c
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4
5    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License version 2 as
9    published by the Free Software Foundation;
10
11    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
14    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
15    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
16    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
20    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
21    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
22    SOFTWARE IS DISCLAIMED.
23 */
24
25 /* Bluetooth HCI sockets. */
26 #include <linux/compat.h>
27 #include <linux/export.h>
28 #include <linux/utsname.h>
29 #include <linux/sched.h>
30 #include <asm/unaligned.h>
31
32 #include <net/bluetooth/bluetooth.h>
33 #include <net/bluetooth/hci_core.h>
34 #include <net/bluetooth/hci_mon.h>
35 #include <net/bluetooth/mgmt.h>
36
37 #include "mgmt_util.h"
38
39 static LIST_HEAD(mgmt_chan_list);
40 static DEFINE_MUTEX(mgmt_chan_list_lock);
41
42 static DEFINE_IDA(sock_cookie_ida);
43
44 static atomic_t monitor_promisc = ATOMIC_INIT(0);
45
46 /* ----- HCI socket interface ----- */
47
48 /* Socket info */
49 #define hci_pi(sk) ((struct hci_pinfo *) sk)
50
51 struct hci_pinfo {
52         struct bt_sock    bt;
53         struct hci_dev    *hdev;
54         struct hci_filter filter;
55         __u32             cmsg_mask;
56         unsigned short    channel;
57         unsigned long     flags;
58         __u32             cookie;
59         char              comm[TASK_COMM_LEN];
60 };
61
62 void hci_sock_set_flag(struct sock *sk, int nr)
63 {
64         set_bit(nr, &hci_pi(sk)->flags);
65 }
66
67 void hci_sock_clear_flag(struct sock *sk, int nr)
68 {
69         clear_bit(nr, &hci_pi(sk)->flags);
70 }
71
72 int hci_sock_test_flag(struct sock *sk, int nr)
73 {
74         return test_bit(nr, &hci_pi(sk)->flags);
75 }
76
77 unsigned short hci_sock_get_channel(struct sock *sk)
78 {
79         return hci_pi(sk)->channel;
80 }
81
82 u32 hci_sock_get_cookie(struct sock *sk)
83 {
84         return hci_pi(sk)->cookie;
85 }
86
87 static bool hci_sock_gen_cookie(struct sock *sk)
88 {
89         int id = hci_pi(sk)->cookie;
90
91         if (!id) {
92                 id = ida_simple_get(&sock_cookie_ida, 1, 0, GFP_KERNEL);
93                 if (id < 0)
94                         id = 0xffffffff;
95
96                 hci_pi(sk)->cookie = id;
97                 get_task_comm(hci_pi(sk)->comm, current);
98                 return true;
99         }
100
101         return false;
102 }
103
104 static void hci_sock_free_cookie(struct sock *sk)
105 {
106         int id = hci_pi(sk)->cookie;
107
108         if (id) {
109                 hci_pi(sk)->cookie = 0xffffffff;
110                 ida_simple_remove(&sock_cookie_ida, id);
111         }
112 }
113
114 static inline int hci_test_bit(int nr, const void *addr)
115 {
116         return *((const __u32 *) addr + (nr >> 5)) & ((__u32) 1 << (nr & 31));
117 }
118
119 /* Security filter */
120 #define HCI_SFLT_MAX_OGF  5
121
122 struct hci_sec_filter {
123         __u32 type_mask;
124         __u32 event_mask[2];
125         __u32 ocf_mask[HCI_SFLT_MAX_OGF + 1][4];
126 };
127
128 static const struct hci_sec_filter hci_sec_filter = {
129         /* Packet types */
130         0x10,
131         /* Events */
132         { 0x1000d9fe, 0x0000b00c },
133         /* Commands */
134         {
135                 { 0x0 },
136                 /* OGF_LINK_CTL */
137                 { 0xbe000006, 0x00000001, 0x00000000, 0x00 },
138                 /* OGF_LINK_POLICY */
139                 { 0x00005200, 0x00000000, 0x00000000, 0x00 },
140                 /* OGF_HOST_CTL */
141                 { 0xaab00200, 0x2b402aaa, 0x05220154, 0x00 },
142                 /* OGF_INFO_PARAM */
143                 { 0x000002be, 0x00000000, 0x00000000, 0x00 },
144                 /* OGF_STATUS_PARAM */
145                 { 0x000000ea, 0x00000000, 0x00000000, 0x00 }
146         }
147 };
148
149 static struct bt_sock_list hci_sk_list = {
150         .lock = __RW_LOCK_UNLOCKED(hci_sk_list.lock)
151 };
152
153 static bool is_filtered_packet(struct sock *sk, struct sk_buff *skb)
154 {
155         struct hci_filter *flt;
156         int flt_type, flt_event;
157
158         /* Apply filter */
159         flt = &hci_pi(sk)->filter;
160
161         flt_type = hci_skb_pkt_type(skb) & HCI_FLT_TYPE_BITS;
162
163         if (!test_bit(flt_type, &flt->type_mask))
164                 return true;
165
166         /* Extra filter for event packets only */
167         if (hci_skb_pkt_type(skb) != HCI_EVENT_PKT)
168                 return false;
169
170         flt_event = (*(__u8 *)skb->data & HCI_FLT_EVENT_BITS);
171
172         if (!hci_test_bit(flt_event, &flt->event_mask))
173                 return true;
174
175         /* Check filter only when opcode is set */
176         if (!flt->opcode)
177                 return false;
178
179         if (flt_event == HCI_EV_CMD_COMPLETE &&
180             flt->opcode != get_unaligned((__le16 *)(skb->data + 3)))
181                 return true;
182
183         if (flt_event == HCI_EV_CMD_STATUS &&
184             flt->opcode != get_unaligned((__le16 *)(skb->data + 4)))
185                 return true;
186
187         return false;
188 }
189
190 /* Send frame to RAW socket */
191 void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb)
192 {
193         struct sock *sk;
194         struct sk_buff *skb_copy = NULL;
195
196         BT_DBG("hdev %p len %d", hdev, skb->len);
197
198         read_lock(&hci_sk_list.lock);
199
200         sk_for_each(sk, &hci_sk_list.head) {
201                 struct sk_buff *nskb;
202
203                 if (sk->sk_state != BT_BOUND || hci_pi(sk)->hdev != hdev)
204                         continue;
205
206                 /* Don't send frame to the socket it came from */
207                 if (skb->sk == sk)
208                         continue;
209
210                 if (hci_pi(sk)->channel == HCI_CHANNEL_RAW) {
211                         if (hci_skb_pkt_type(skb) != HCI_COMMAND_PKT &&
212                             hci_skb_pkt_type(skb) != HCI_EVENT_PKT &&
213                             hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
214                             hci_skb_pkt_type(skb) != HCI_SCODATA_PKT)
215                                 continue;
216                         if (is_filtered_packet(sk, skb))
217                                 continue;
218                 } else if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
219                         if (!bt_cb(skb)->incoming)
220                                 continue;
221                         if (hci_skb_pkt_type(skb) != HCI_EVENT_PKT &&
222                             hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
223                             hci_skb_pkt_type(skb) != HCI_SCODATA_PKT)
224                                 continue;
225                 } else {
226                         /* Don't send frame to other channel types */
227                         continue;
228                 }
229
230                 if (!skb_copy) {
231                         /* Create a private copy with headroom */
232                         skb_copy = __pskb_copy_fclone(skb, 1, GFP_ATOMIC, true);
233                         if (!skb_copy)
234                                 continue;
235
236                         /* Put type byte before the data */
237                         memcpy(skb_push(skb_copy, 1), &hci_skb_pkt_type(skb), 1);
238                 }
239
240                 nskb = skb_clone(skb_copy, GFP_ATOMIC);
241                 if (!nskb)
242                         continue;
243
244                 if (sock_queue_rcv_skb(sk, nskb))
245                         kfree_skb(nskb);
246         }
247
248         read_unlock(&hci_sk_list.lock);
249
250         kfree_skb(skb_copy);
251 }
252
253 /* Send frame to sockets with specific channel */
254 static void __hci_send_to_channel(unsigned short channel, struct sk_buff *skb,
255                                   int flag, struct sock *skip_sk)
256 {
257         struct sock *sk;
258
259         BT_DBG("channel %u len %d", channel, skb->len);
260
261         sk_for_each(sk, &hci_sk_list.head) {
262                 struct sk_buff *nskb;
263
264                 /* Ignore socket without the flag set */
265                 if (!hci_sock_test_flag(sk, flag))
266                         continue;
267
268                 /* Skip the original socket */
269                 if (sk == skip_sk)
270                         continue;
271
272                 if (sk->sk_state != BT_BOUND)
273                         continue;
274
275                 if (hci_pi(sk)->channel != channel)
276                         continue;
277
278                 nskb = skb_clone(skb, GFP_ATOMIC);
279                 if (!nskb)
280                         continue;
281
282                 if (sock_queue_rcv_skb(sk, nskb))
283                         kfree_skb(nskb);
284         }
285
286 }
287
288 void hci_send_to_channel(unsigned short channel, struct sk_buff *skb,
289                          int flag, struct sock *skip_sk)
290 {
291         read_lock(&hci_sk_list.lock);
292         __hci_send_to_channel(channel, skb, flag, skip_sk);
293         read_unlock(&hci_sk_list.lock);
294 }
295
296 /* Send frame to monitor socket */
297 void hci_send_to_monitor(struct hci_dev *hdev, struct sk_buff *skb)
298 {
299         struct sk_buff *skb_copy = NULL;
300         struct hci_mon_hdr *hdr;
301         __le16 opcode;
302
303         if (!atomic_read(&monitor_promisc))
304                 return;
305
306         BT_DBG("hdev %p len %d", hdev, skb->len);
307
308         switch (hci_skb_pkt_type(skb)) {
309         case HCI_COMMAND_PKT:
310                 opcode = cpu_to_le16(HCI_MON_COMMAND_PKT);
311                 break;
312         case HCI_EVENT_PKT:
313                 opcode = cpu_to_le16(HCI_MON_EVENT_PKT);
314                 break;
315         case HCI_ACLDATA_PKT:
316                 if (bt_cb(skb)->incoming)
317                         opcode = cpu_to_le16(HCI_MON_ACL_RX_PKT);
318                 else
319                         opcode = cpu_to_le16(HCI_MON_ACL_TX_PKT);
320                 break;
321         case HCI_SCODATA_PKT:
322                 if (bt_cb(skb)->incoming)
323                         opcode = cpu_to_le16(HCI_MON_SCO_RX_PKT);
324                 else
325                         opcode = cpu_to_le16(HCI_MON_SCO_TX_PKT);
326                 break;
327         case HCI_DIAG_PKT:
328                 opcode = cpu_to_le16(HCI_MON_VENDOR_DIAG);
329                 break;
330         default:
331                 return;
332         }
333
334         /* Create a private copy with headroom */
335         skb_copy = __pskb_copy_fclone(skb, HCI_MON_HDR_SIZE, GFP_ATOMIC, true);
336         if (!skb_copy)
337                 return;
338
339         /* Put header before the data */
340         hdr = skb_push(skb_copy, HCI_MON_HDR_SIZE);
341         hdr->opcode = opcode;
342         hdr->index = cpu_to_le16(hdev->id);
343         hdr->len = cpu_to_le16(skb->len);
344
345         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb_copy,
346                             HCI_SOCK_TRUSTED, NULL);
347         kfree_skb(skb_copy);
348 }
349
350 void hci_send_monitor_ctrl_event(struct hci_dev *hdev, u16 event,
351                                  void *data, u16 data_len, ktime_t tstamp,
352                                  int flag, struct sock *skip_sk)
353 {
354         struct sock *sk;
355         __le16 index;
356
357         if (hdev)
358                 index = cpu_to_le16(hdev->id);
359         else
360                 index = cpu_to_le16(MGMT_INDEX_NONE);
361
362         read_lock(&hci_sk_list.lock);
363
364         sk_for_each(sk, &hci_sk_list.head) {
365                 struct hci_mon_hdr *hdr;
366                 struct sk_buff *skb;
367
368                 if (hci_pi(sk)->channel != HCI_CHANNEL_CONTROL)
369                         continue;
370
371                 /* Ignore socket without the flag set */
372                 if (!hci_sock_test_flag(sk, flag))
373                         continue;
374
375                 /* Skip the original socket */
376                 if (sk == skip_sk)
377                         continue;
378
379                 skb = bt_skb_alloc(6 + data_len, GFP_ATOMIC);
380                 if (!skb)
381                         continue;
382
383                 put_unaligned_le32(hci_pi(sk)->cookie, skb_put(skb, 4));
384                 put_unaligned_le16(event, skb_put(skb, 2));
385
386                 if (data)
387                         skb_put_data(skb, data, data_len);
388
389                 skb->tstamp = tstamp;
390
391                 hdr = skb_push(skb, HCI_MON_HDR_SIZE);
392                 hdr->opcode = cpu_to_le16(HCI_MON_CTRL_EVENT);
393                 hdr->index = index;
394                 hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE);
395
396                 __hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
397                                       HCI_SOCK_TRUSTED, NULL);
398                 kfree_skb(skb);
399         }
400
401         read_unlock(&hci_sk_list.lock);
402 }
403
404 static struct sk_buff *create_monitor_event(struct hci_dev *hdev, int event)
405 {
406         struct hci_mon_hdr *hdr;
407         struct hci_mon_new_index *ni;
408         struct hci_mon_index_info *ii;
409         struct sk_buff *skb;
410         __le16 opcode;
411
412         switch (event) {
413         case HCI_DEV_REG:
414                 skb = bt_skb_alloc(HCI_MON_NEW_INDEX_SIZE, GFP_ATOMIC);
415                 if (!skb)
416                         return NULL;
417
418                 ni = skb_put(skb, HCI_MON_NEW_INDEX_SIZE);
419                 ni->type = hdev->dev_type;
420                 ni->bus = hdev->bus;
421                 bacpy(&ni->bdaddr, &hdev->bdaddr);
422                 memcpy(ni->name, hdev->name, 8);
423
424                 opcode = cpu_to_le16(HCI_MON_NEW_INDEX);
425                 break;
426
427         case HCI_DEV_UNREG:
428                 skb = bt_skb_alloc(0, GFP_ATOMIC);
429                 if (!skb)
430                         return NULL;
431
432                 opcode = cpu_to_le16(HCI_MON_DEL_INDEX);
433                 break;
434
435         case HCI_DEV_SETUP:
436                 if (hdev->manufacturer == 0xffff)
437                         return NULL;
438
439                 /* fall through */
440
441         case HCI_DEV_UP:
442                 skb = bt_skb_alloc(HCI_MON_INDEX_INFO_SIZE, GFP_ATOMIC);
443                 if (!skb)
444                         return NULL;
445
446                 ii = skb_put(skb, HCI_MON_INDEX_INFO_SIZE);
447                 bacpy(&ii->bdaddr, &hdev->bdaddr);
448                 ii->manufacturer = cpu_to_le16(hdev->manufacturer);
449
450                 opcode = cpu_to_le16(HCI_MON_INDEX_INFO);
451                 break;
452
453         case HCI_DEV_OPEN:
454                 skb = bt_skb_alloc(0, GFP_ATOMIC);
455                 if (!skb)
456                         return NULL;
457
458                 opcode = cpu_to_le16(HCI_MON_OPEN_INDEX);
459                 break;
460
461         case HCI_DEV_CLOSE:
462                 skb = bt_skb_alloc(0, GFP_ATOMIC);
463                 if (!skb)
464                         return NULL;
465
466                 opcode = cpu_to_le16(HCI_MON_CLOSE_INDEX);
467                 break;
468
469         default:
470                 return NULL;
471         }
472
473         __net_timestamp(skb);
474
475         hdr = skb_push(skb, HCI_MON_HDR_SIZE);
476         hdr->opcode = opcode;
477         hdr->index = cpu_to_le16(hdev->id);
478         hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE);
479
480         return skb;
481 }
482
483 static struct sk_buff *create_monitor_ctrl_open(struct sock *sk)
484 {
485         struct hci_mon_hdr *hdr;
486         struct sk_buff *skb;
487         u16 format;
488         u8 ver[3];
489         u32 flags;
490
491         /* No message needed when cookie is not present */
492         if (!hci_pi(sk)->cookie)
493                 return NULL;
494
495         switch (hci_pi(sk)->channel) {
496         case HCI_CHANNEL_RAW:
497                 format = 0x0000;
498                 ver[0] = BT_SUBSYS_VERSION;
499                 put_unaligned_le16(BT_SUBSYS_REVISION, ver + 1);
500                 break;
501         case HCI_CHANNEL_USER:
502                 format = 0x0001;
503                 ver[0] = BT_SUBSYS_VERSION;
504                 put_unaligned_le16(BT_SUBSYS_REVISION, ver + 1);
505                 break;
506         case HCI_CHANNEL_CONTROL:
507                 format = 0x0002;
508                 mgmt_fill_version_info(ver);
509                 break;
510         default:
511                 /* No message for unsupported format */
512                 return NULL;
513         }
514
515         skb = bt_skb_alloc(14 + TASK_COMM_LEN , GFP_ATOMIC);
516         if (!skb)
517                 return NULL;
518
519         flags = hci_sock_test_flag(sk, HCI_SOCK_TRUSTED) ? 0x1 : 0x0;
520
521         put_unaligned_le32(hci_pi(sk)->cookie, skb_put(skb, 4));
522         put_unaligned_le16(format, skb_put(skb, 2));
523         skb_put_data(skb, ver, sizeof(ver));
524         put_unaligned_le32(flags, skb_put(skb, 4));
525         skb_put_u8(skb, TASK_COMM_LEN);
526         skb_put_data(skb, hci_pi(sk)->comm, TASK_COMM_LEN);
527
528         __net_timestamp(skb);
529
530         hdr = skb_push(skb, HCI_MON_HDR_SIZE);
531         hdr->opcode = cpu_to_le16(HCI_MON_CTRL_OPEN);
532         if (hci_pi(sk)->hdev)
533                 hdr->index = cpu_to_le16(hci_pi(sk)->hdev->id);
534         else
535                 hdr->index = cpu_to_le16(HCI_DEV_NONE);
536         hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE);
537
538         return skb;
539 }
540
541 static struct sk_buff *create_monitor_ctrl_close(struct sock *sk)
542 {
543         struct hci_mon_hdr *hdr;
544         struct sk_buff *skb;
545
546         /* No message needed when cookie is not present */
547         if (!hci_pi(sk)->cookie)
548                 return NULL;
549
550         switch (hci_pi(sk)->channel) {
551         case HCI_CHANNEL_RAW:
552         case HCI_CHANNEL_USER:
553         case HCI_CHANNEL_CONTROL:
554                 break;
555         default:
556                 /* No message for unsupported format */
557                 return NULL;
558         }
559
560         skb = bt_skb_alloc(4, GFP_ATOMIC);
561         if (!skb)
562                 return NULL;
563
564         put_unaligned_le32(hci_pi(sk)->cookie, skb_put(skb, 4));
565
566         __net_timestamp(skb);
567
568         hdr = skb_push(skb, HCI_MON_HDR_SIZE);
569         hdr->opcode = cpu_to_le16(HCI_MON_CTRL_CLOSE);
570         if (hci_pi(sk)->hdev)
571                 hdr->index = cpu_to_le16(hci_pi(sk)->hdev->id);
572         else
573                 hdr->index = cpu_to_le16(HCI_DEV_NONE);
574         hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE);
575
576         return skb;
577 }
578
579 static struct sk_buff *create_monitor_ctrl_command(struct sock *sk, u16 index,
580                                                    u16 opcode, u16 len,
581                                                    const void *buf)
582 {
583         struct hci_mon_hdr *hdr;
584         struct sk_buff *skb;
585
586         skb = bt_skb_alloc(6 + len, GFP_ATOMIC);
587         if (!skb)
588                 return NULL;
589
590         put_unaligned_le32(hci_pi(sk)->cookie, skb_put(skb, 4));
591         put_unaligned_le16(opcode, skb_put(skb, 2));
592
593         if (buf)
594                 skb_put_data(skb, buf, len);
595
596         __net_timestamp(skb);
597
598         hdr = skb_push(skb, HCI_MON_HDR_SIZE);
599         hdr->opcode = cpu_to_le16(HCI_MON_CTRL_COMMAND);
600         hdr->index = cpu_to_le16(index);
601         hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE);
602
603         return skb;
604 }
605
606 static void __printf(2, 3)
607 send_monitor_note(struct sock *sk, const char *fmt, ...)
608 {
609         size_t len;
610         struct hci_mon_hdr *hdr;
611         struct sk_buff *skb;
612         va_list args;
613
614         va_start(args, fmt);
615         len = vsnprintf(NULL, 0, fmt, args);
616         va_end(args);
617
618         skb = bt_skb_alloc(len + 1, GFP_ATOMIC);
619         if (!skb)
620                 return;
621
622         va_start(args, fmt);
623         vsprintf(skb_put(skb, len), fmt, args);
624         *(u8 *)skb_put(skb, 1) = 0;
625         va_end(args);
626
627         __net_timestamp(skb);
628
629         hdr = (void *)skb_push(skb, HCI_MON_HDR_SIZE);
630         hdr->opcode = cpu_to_le16(HCI_MON_SYSTEM_NOTE);
631         hdr->index = cpu_to_le16(HCI_DEV_NONE);
632         hdr->len = cpu_to_le16(skb->len - HCI_MON_HDR_SIZE);
633
634         if (sock_queue_rcv_skb(sk, skb))
635                 kfree_skb(skb);
636 }
637
638 static void send_monitor_replay(struct sock *sk)
639 {
640         struct hci_dev *hdev;
641
642         read_lock(&hci_dev_list_lock);
643
644         list_for_each_entry(hdev, &hci_dev_list, list) {
645                 struct sk_buff *skb;
646
647                 skb = create_monitor_event(hdev, HCI_DEV_REG);
648                 if (!skb)
649                         continue;
650
651                 if (sock_queue_rcv_skb(sk, skb))
652                         kfree_skb(skb);
653
654                 if (!test_bit(HCI_RUNNING, &hdev->flags))
655                         continue;
656
657                 skb = create_monitor_event(hdev, HCI_DEV_OPEN);
658                 if (!skb)
659                         continue;
660
661                 if (sock_queue_rcv_skb(sk, skb))
662                         kfree_skb(skb);
663
664                 if (test_bit(HCI_UP, &hdev->flags))
665                         skb = create_monitor_event(hdev, HCI_DEV_UP);
666                 else if (hci_dev_test_flag(hdev, HCI_SETUP))
667                         skb = create_monitor_event(hdev, HCI_DEV_SETUP);
668                 else
669                         skb = NULL;
670
671                 if (skb) {
672                         if (sock_queue_rcv_skb(sk, skb))
673                                 kfree_skb(skb);
674                 }
675         }
676
677         read_unlock(&hci_dev_list_lock);
678 }
679
680 static void send_monitor_control_replay(struct sock *mon_sk)
681 {
682         struct sock *sk;
683
684         read_lock(&hci_sk_list.lock);
685
686         sk_for_each(sk, &hci_sk_list.head) {
687                 struct sk_buff *skb;
688
689                 skb = create_monitor_ctrl_open(sk);
690                 if (!skb)
691                         continue;
692
693                 if (sock_queue_rcv_skb(mon_sk, skb))
694                         kfree_skb(skb);
695         }
696
697         read_unlock(&hci_sk_list.lock);
698 }
699
700 /* Generate internal stack event */
701 static void hci_si_event(struct hci_dev *hdev, int type, int dlen, void *data)
702 {
703         struct hci_event_hdr *hdr;
704         struct hci_ev_stack_internal *ev;
705         struct sk_buff *skb;
706
707         skb = bt_skb_alloc(HCI_EVENT_HDR_SIZE + sizeof(*ev) + dlen, GFP_ATOMIC);
708         if (!skb)
709                 return;
710
711         hdr = skb_put(skb, HCI_EVENT_HDR_SIZE);
712         hdr->evt  = HCI_EV_STACK_INTERNAL;
713         hdr->plen = sizeof(*ev) + dlen;
714
715         ev = skb_put(skb, sizeof(*ev) + dlen);
716         ev->type = type;
717         memcpy(ev->data, data, dlen);
718
719         bt_cb(skb)->incoming = 1;
720         __net_timestamp(skb);
721
722         hci_skb_pkt_type(skb) = HCI_EVENT_PKT;
723         hci_send_to_sock(hdev, skb);
724         kfree_skb(skb);
725 }
726
727 void hci_sock_dev_event(struct hci_dev *hdev, int event)
728 {
729         BT_DBG("hdev %s event %d", hdev->name, event);
730
731         if (atomic_read(&monitor_promisc)) {
732                 struct sk_buff *skb;
733
734                 /* Send event to monitor */
735                 skb = create_monitor_event(hdev, event);
736                 if (skb) {
737                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
738                                             HCI_SOCK_TRUSTED, NULL);
739                         kfree_skb(skb);
740                 }
741         }
742
743         if (event <= HCI_DEV_DOWN) {
744                 struct hci_ev_si_device ev;
745
746                 /* Send event to sockets */
747                 ev.event  = event;
748                 ev.dev_id = hdev->id;
749                 hci_si_event(NULL, HCI_EV_SI_DEVICE, sizeof(ev), &ev);
750         }
751
752         if (event == HCI_DEV_UNREG) {
753                 struct sock *sk;
754
755                 /* Detach sockets from device */
756                 read_lock(&hci_sk_list.lock);
757                 sk_for_each(sk, &hci_sk_list.head) {
758                         bh_lock_sock_nested(sk);
759                         if (hci_pi(sk)->hdev == hdev) {
760                                 hci_pi(sk)->hdev = NULL;
761                                 sk->sk_err = EPIPE;
762                                 sk->sk_state = BT_OPEN;
763                                 sk->sk_state_change(sk);
764
765                                 hci_dev_put(hdev);
766                         }
767                         bh_unlock_sock(sk);
768                 }
769                 read_unlock(&hci_sk_list.lock);
770         }
771 }
772
773 static struct hci_mgmt_chan *__hci_mgmt_chan_find(unsigned short channel)
774 {
775         struct hci_mgmt_chan *c;
776
777         list_for_each_entry(c, &mgmt_chan_list, list) {
778                 if (c->channel == channel)
779                         return c;
780         }
781
782         return NULL;
783 }
784
785 static struct hci_mgmt_chan *hci_mgmt_chan_find(unsigned short channel)
786 {
787         struct hci_mgmt_chan *c;
788
789         mutex_lock(&mgmt_chan_list_lock);
790         c = __hci_mgmt_chan_find(channel);
791         mutex_unlock(&mgmt_chan_list_lock);
792
793         return c;
794 }
795
796 int hci_mgmt_chan_register(struct hci_mgmt_chan *c)
797 {
798         if (c->channel < HCI_CHANNEL_CONTROL)
799                 return -EINVAL;
800
801         mutex_lock(&mgmt_chan_list_lock);
802         if (__hci_mgmt_chan_find(c->channel)) {
803                 mutex_unlock(&mgmt_chan_list_lock);
804                 return -EALREADY;
805         }
806
807         list_add_tail(&c->list, &mgmt_chan_list);
808
809         mutex_unlock(&mgmt_chan_list_lock);
810
811         return 0;
812 }
813 EXPORT_SYMBOL(hci_mgmt_chan_register);
814
815 void hci_mgmt_chan_unregister(struct hci_mgmt_chan *c)
816 {
817         mutex_lock(&mgmt_chan_list_lock);
818         list_del(&c->list);
819         mutex_unlock(&mgmt_chan_list_lock);
820 }
821 EXPORT_SYMBOL(hci_mgmt_chan_unregister);
822
823 static int hci_sock_release(struct socket *sock)
824 {
825         struct sock *sk = sock->sk;
826         struct hci_dev *hdev;
827         struct sk_buff *skb;
828
829         BT_DBG("sock %p sk %p", sock, sk);
830
831         if (!sk)
832                 return 0;
833
834         switch (hci_pi(sk)->channel) {
835         case HCI_CHANNEL_MONITOR:
836                 atomic_dec(&monitor_promisc);
837                 break;
838         case HCI_CHANNEL_RAW:
839         case HCI_CHANNEL_USER:
840         case HCI_CHANNEL_CONTROL:
841                 /* Send event to monitor */
842                 skb = create_monitor_ctrl_close(sk);
843                 if (skb) {
844                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
845                                             HCI_SOCK_TRUSTED, NULL);
846                         kfree_skb(skb);
847                 }
848
849                 hci_sock_free_cookie(sk);
850                 break;
851         }
852
853         bt_sock_unlink(&hci_sk_list, sk);
854
855         hdev = hci_pi(sk)->hdev;
856         if (hdev) {
857                 if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
858                         /* When releasing a user channel exclusive access,
859                          * call hci_dev_do_close directly instead of calling
860                          * hci_dev_close to ensure the exclusive access will
861                          * be released and the controller brought back down.
862                          *
863                          * The checking of HCI_AUTO_OFF is not needed in this
864                          * case since it will have been cleared already when
865                          * opening the user channel.
866                          */
867                         hci_dev_do_close(hdev);
868                         hci_dev_clear_flag(hdev, HCI_USER_CHANNEL);
869                         mgmt_index_added(hdev);
870                 }
871
872                 atomic_dec(&hdev->promisc);
873                 hci_dev_put(hdev);
874         }
875
876         sock_orphan(sk);
877
878         skb_queue_purge(&sk->sk_receive_queue);
879         skb_queue_purge(&sk->sk_write_queue);
880
881         sock_put(sk);
882         return 0;
883 }
884
885 static int hci_sock_blacklist_add(struct hci_dev *hdev, void __user *arg)
886 {
887         bdaddr_t bdaddr;
888         int err;
889
890         if (copy_from_user(&bdaddr, arg, sizeof(bdaddr)))
891                 return -EFAULT;
892
893         hci_dev_lock(hdev);
894
895         err = hci_bdaddr_list_add(&hdev->blacklist, &bdaddr, BDADDR_BREDR);
896
897         hci_dev_unlock(hdev);
898
899         return err;
900 }
901
902 static int hci_sock_blacklist_del(struct hci_dev *hdev, void __user *arg)
903 {
904         bdaddr_t bdaddr;
905         int err;
906
907         if (copy_from_user(&bdaddr, arg, sizeof(bdaddr)))
908                 return -EFAULT;
909
910         hci_dev_lock(hdev);
911
912         err = hci_bdaddr_list_del(&hdev->blacklist, &bdaddr, BDADDR_BREDR);
913
914         hci_dev_unlock(hdev);
915
916         return err;
917 }
918
919 /* Ioctls that require bound socket */
920 static int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd,
921                                 unsigned long arg)
922 {
923         struct hci_dev *hdev = hci_pi(sk)->hdev;
924
925         if (!hdev)
926                 return -EBADFD;
927
928         if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL))
929                 return -EBUSY;
930
931         if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED))
932                 return -EOPNOTSUPP;
933
934         if (hdev->dev_type != HCI_PRIMARY)
935                 return -EOPNOTSUPP;
936
937         switch (cmd) {
938         case HCISETRAW:
939                 if (!capable(CAP_NET_ADMIN))
940                         return -EPERM;
941                 return -EOPNOTSUPP;
942
943         case HCIGETCONNINFO:
944                 return hci_get_conn_info(hdev, (void __user *)arg);
945
946         case HCIGETAUTHINFO:
947                 return hci_get_auth_info(hdev, (void __user *)arg);
948
949         case HCIBLOCKADDR:
950                 if (!capable(CAP_NET_ADMIN))
951                         return -EPERM;
952                 return hci_sock_blacklist_add(hdev, (void __user *)arg);
953
954         case HCIUNBLOCKADDR:
955                 if (!capable(CAP_NET_ADMIN))
956                         return -EPERM;
957                 return hci_sock_blacklist_del(hdev, (void __user *)arg);
958         }
959
960         return -ENOIOCTLCMD;
961 }
962
963 static int hci_sock_ioctl(struct socket *sock, unsigned int cmd,
964                           unsigned long arg)
965 {
966         void __user *argp = (void __user *)arg;
967         struct sock *sk = sock->sk;
968         int err;
969
970         BT_DBG("cmd %x arg %lx", cmd, arg);
971
972         lock_sock(sk);
973
974         if (hci_pi(sk)->channel != HCI_CHANNEL_RAW) {
975                 err = -EBADFD;
976                 goto done;
977         }
978
979         /* When calling an ioctl on an unbound raw socket, then ensure
980          * that the monitor gets informed. Ensure that the resulting event
981          * is only send once by checking if the cookie exists or not. The
982          * socket cookie will be only ever generated once for the lifetime
983          * of a given socket.
984          */
985         if (hci_sock_gen_cookie(sk)) {
986                 struct sk_buff *skb;
987
988                 if (capable(CAP_NET_ADMIN))
989                         hci_sock_set_flag(sk, HCI_SOCK_TRUSTED);
990
991                 /* Send event to monitor */
992                 skb = create_monitor_ctrl_open(sk);
993                 if (skb) {
994                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
995                                             HCI_SOCK_TRUSTED, NULL);
996                         kfree_skb(skb);
997                 }
998         }
999
1000         release_sock(sk);
1001
1002         switch (cmd) {
1003         case HCIGETDEVLIST:
1004                 return hci_get_dev_list(argp);
1005
1006         case HCIGETDEVINFO:
1007                 return hci_get_dev_info(argp);
1008
1009         case HCIGETCONNLIST:
1010                 return hci_get_conn_list(argp);
1011
1012         case HCIDEVUP:
1013                 if (!capable(CAP_NET_ADMIN))
1014                         return -EPERM;
1015                 return hci_dev_open(arg);
1016
1017         case HCIDEVDOWN:
1018                 if (!capable(CAP_NET_ADMIN))
1019                         return -EPERM;
1020                 return hci_dev_close(arg);
1021
1022         case HCIDEVRESET:
1023                 if (!capable(CAP_NET_ADMIN))
1024                         return -EPERM;
1025                 return hci_dev_reset(arg);
1026
1027         case HCIDEVRESTAT:
1028                 if (!capable(CAP_NET_ADMIN))
1029                         return -EPERM;
1030                 return hci_dev_reset_stat(arg);
1031
1032         case HCISETSCAN:
1033         case HCISETAUTH:
1034         case HCISETENCRYPT:
1035         case HCISETPTYPE:
1036         case HCISETLINKPOL:
1037         case HCISETLINKMODE:
1038         case HCISETACLMTU:
1039         case HCISETSCOMTU:
1040                 if (!capable(CAP_NET_ADMIN))
1041                         return -EPERM;
1042                 return hci_dev_cmd(cmd, argp);
1043
1044         case HCIINQUIRY:
1045                 return hci_inquiry(argp);
1046         }
1047
1048         lock_sock(sk);
1049
1050         err = hci_sock_bound_ioctl(sk, cmd, arg);
1051
1052 done:
1053         release_sock(sk);
1054         return err;
1055 }
1056
1057 #ifdef CONFIG_COMPAT
1058 static int hci_sock_compat_ioctl(struct socket *sock, unsigned int cmd,
1059                                  unsigned long arg)
1060 {
1061         switch (cmd) {
1062         case HCIDEVUP:
1063         case HCIDEVDOWN:
1064         case HCIDEVRESET:
1065         case HCIDEVRESTAT:
1066                 return hci_sock_ioctl(sock, cmd, arg);
1067         }
1068
1069         return hci_sock_ioctl(sock, cmd, (unsigned long)compat_ptr(arg));
1070 }
1071 #endif
1072
1073 static int hci_sock_bind(struct socket *sock, struct sockaddr *addr,
1074                          int addr_len)
1075 {
1076         struct sockaddr_hci haddr;
1077         struct sock *sk = sock->sk;
1078         struct hci_dev *hdev = NULL;
1079         struct sk_buff *skb;
1080         int len, err = 0;
1081
1082         BT_DBG("sock %p sk %p", sock, sk);
1083
1084         if (!addr)
1085                 return -EINVAL;
1086
1087         memset(&haddr, 0, sizeof(haddr));
1088         len = min_t(unsigned int, sizeof(haddr), addr_len);
1089         memcpy(&haddr, addr, len);
1090
1091         if (haddr.hci_family != AF_BLUETOOTH)
1092                 return -EINVAL;
1093
1094         lock_sock(sk);
1095
1096         if (sk->sk_state == BT_BOUND) {
1097                 err = -EALREADY;
1098                 goto done;
1099         }
1100
1101         switch (haddr.hci_channel) {
1102         case HCI_CHANNEL_RAW:
1103                 if (hci_pi(sk)->hdev) {
1104                         err = -EALREADY;
1105                         goto done;
1106                 }
1107
1108                 if (haddr.hci_dev != HCI_DEV_NONE) {
1109                         hdev = hci_dev_get(haddr.hci_dev);
1110                         if (!hdev) {
1111                                 err = -ENODEV;
1112                                 goto done;
1113                         }
1114
1115                         atomic_inc(&hdev->promisc);
1116                 }
1117
1118                 hci_pi(sk)->channel = haddr.hci_channel;
1119
1120                 if (!hci_sock_gen_cookie(sk)) {
1121                         /* In the case when a cookie has already been assigned,
1122                          * then there has been already an ioctl issued against
1123                          * an unbound socket and with that triggerd an open
1124                          * notification. Send a close notification first to
1125                          * allow the state transition to bounded.
1126                          */
1127                         skb = create_monitor_ctrl_close(sk);
1128                         if (skb) {
1129                                 hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1130                                                     HCI_SOCK_TRUSTED, NULL);
1131                                 kfree_skb(skb);
1132                         }
1133                 }
1134
1135                 if (capable(CAP_NET_ADMIN))
1136                         hci_sock_set_flag(sk, HCI_SOCK_TRUSTED);
1137
1138                 hci_pi(sk)->hdev = hdev;
1139
1140                 /* Send event to monitor */
1141                 skb = create_monitor_ctrl_open(sk);
1142                 if (skb) {
1143                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1144                                             HCI_SOCK_TRUSTED, NULL);
1145                         kfree_skb(skb);
1146                 }
1147                 break;
1148
1149         case HCI_CHANNEL_USER:
1150                 if (hci_pi(sk)->hdev) {
1151                         err = -EALREADY;
1152                         goto done;
1153                 }
1154
1155                 if (haddr.hci_dev == HCI_DEV_NONE) {
1156                         err = -EINVAL;
1157                         goto done;
1158                 }
1159
1160                 if (!capable(CAP_NET_ADMIN)) {
1161                         err = -EPERM;
1162                         goto done;
1163                 }
1164
1165                 hdev = hci_dev_get(haddr.hci_dev);
1166                 if (!hdev) {
1167                         err = -ENODEV;
1168                         goto done;
1169                 }
1170
1171                 if (test_bit(HCI_INIT, &hdev->flags) ||
1172                     hci_dev_test_flag(hdev, HCI_SETUP) ||
1173                     hci_dev_test_flag(hdev, HCI_CONFIG) ||
1174                     (!hci_dev_test_flag(hdev, HCI_AUTO_OFF) &&
1175                      test_bit(HCI_UP, &hdev->flags))) {
1176                         err = -EBUSY;
1177                         hci_dev_put(hdev);
1178                         goto done;
1179                 }
1180
1181                 if (hci_dev_test_and_set_flag(hdev, HCI_USER_CHANNEL)) {
1182                         err = -EUSERS;
1183                         hci_dev_put(hdev);
1184                         goto done;
1185                 }
1186
1187                 mgmt_index_removed(hdev);
1188
1189                 err = hci_dev_open(hdev->id);
1190                 if (err) {
1191                         if (err == -EALREADY) {
1192                                 /* In case the transport is already up and
1193                                  * running, clear the error here.
1194                                  *
1195                                  * This can happen when opening a user
1196                                  * channel and HCI_AUTO_OFF grace period
1197                                  * is still active.
1198                                  */
1199                                 err = 0;
1200                         } else {
1201                                 hci_dev_clear_flag(hdev, HCI_USER_CHANNEL);
1202                                 mgmt_index_added(hdev);
1203                                 hci_dev_put(hdev);
1204                                 goto done;
1205                         }
1206                 }
1207
1208                 hci_pi(sk)->channel = haddr.hci_channel;
1209
1210                 if (!hci_sock_gen_cookie(sk)) {
1211                         /* In the case when a cookie has already been assigned,
1212                          * this socket will transition from a raw socket into
1213                          * a user channel socket. For a clean transition, send
1214                          * the close notification first.
1215                          */
1216                         skb = create_monitor_ctrl_close(sk);
1217                         if (skb) {
1218                                 hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1219                                                     HCI_SOCK_TRUSTED, NULL);
1220                                 kfree_skb(skb);
1221                         }
1222                 }
1223
1224                 /* The user channel is restricted to CAP_NET_ADMIN
1225                  * capabilities and with that implicitly trusted.
1226                  */
1227                 hci_sock_set_flag(sk, HCI_SOCK_TRUSTED);
1228
1229                 hci_pi(sk)->hdev = hdev;
1230
1231                 /* Send event to monitor */
1232                 skb = create_monitor_ctrl_open(sk);
1233                 if (skb) {
1234                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1235                                             HCI_SOCK_TRUSTED, NULL);
1236                         kfree_skb(skb);
1237                 }
1238
1239                 atomic_inc(&hdev->promisc);
1240                 break;
1241
1242         case HCI_CHANNEL_MONITOR:
1243                 if (haddr.hci_dev != HCI_DEV_NONE) {
1244                         err = -EINVAL;
1245                         goto done;
1246                 }
1247
1248                 if (!capable(CAP_NET_RAW)) {
1249                         err = -EPERM;
1250                         goto done;
1251                 }
1252
1253                 hci_pi(sk)->channel = haddr.hci_channel;
1254
1255                 /* The monitor interface is restricted to CAP_NET_RAW
1256                  * capabilities and with that implicitly trusted.
1257                  */
1258                 hci_sock_set_flag(sk, HCI_SOCK_TRUSTED);
1259
1260                 send_monitor_note(sk, "Linux version %s (%s)",
1261                                   init_utsname()->release,
1262                                   init_utsname()->machine);
1263                 send_monitor_note(sk, "Bluetooth subsystem version %u.%u",
1264                                   BT_SUBSYS_VERSION, BT_SUBSYS_REVISION);
1265                 send_monitor_replay(sk);
1266                 send_monitor_control_replay(sk);
1267
1268                 atomic_inc(&monitor_promisc);
1269                 break;
1270
1271         case HCI_CHANNEL_LOGGING:
1272                 if (haddr.hci_dev != HCI_DEV_NONE) {
1273                         err = -EINVAL;
1274                         goto done;
1275                 }
1276
1277                 if (!capable(CAP_NET_ADMIN)) {
1278                         err = -EPERM;
1279                         goto done;
1280                 }
1281
1282                 hci_pi(sk)->channel = haddr.hci_channel;
1283                 break;
1284
1285         default:
1286                 if (!hci_mgmt_chan_find(haddr.hci_channel)) {
1287                         err = -EINVAL;
1288                         goto done;
1289                 }
1290
1291                 if (haddr.hci_dev != HCI_DEV_NONE) {
1292                         err = -EINVAL;
1293                         goto done;
1294                 }
1295
1296                 /* Users with CAP_NET_ADMIN capabilities are allowed
1297                  * access to all management commands and events. For
1298                  * untrusted users the interface is restricted and
1299                  * also only untrusted events are sent.
1300                  */
1301                 if (capable(CAP_NET_ADMIN))
1302                         hci_sock_set_flag(sk, HCI_SOCK_TRUSTED);
1303
1304                 hci_pi(sk)->channel = haddr.hci_channel;
1305
1306                 /* At the moment the index and unconfigured index events
1307                  * are enabled unconditionally. Setting them on each
1308                  * socket when binding keeps this functionality. They
1309                  * however might be cleared later and then sending of these
1310                  * events will be disabled, but that is then intentional.
1311                  *
1312                  * This also enables generic events that are safe to be
1313                  * received by untrusted users. Example for such events
1314                  * are changes to settings, class of device, name etc.
1315                  */
1316                 if (hci_pi(sk)->channel == HCI_CHANNEL_CONTROL) {
1317                         if (!hci_sock_gen_cookie(sk)) {
1318                                 /* In the case when a cookie has already been
1319                                  * assigned, this socket will transtion from
1320                                  * a raw socket into a control socket. To
1321                                  * allow for a clean transtion, send the
1322                                  * close notification first.
1323                                  */
1324                                 skb = create_monitor_ctrl_close(sk);
1325                                 if (skb) {
1326                                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1327                                                             HCI_SOCK_TRUSTED, NULL);
1328                                         kfree_skb(skb);
1329                                 }
1330                         }
1331
1332                         /* Send event to monitor */
1333                         skb = create_monitor_ctrl_open(sk);
1334                         if (skb) {
1335                                 hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1336                                                     HCI_SOCK_TRUSTED, NULL);
1337                                 kfree_skb(skb);
1338                         }
1339
1340                         hci_sock_set_flag(sk, HCI_MGMT_INDEX_EVENTS);
1341                         hci_sock_set_flag(sk, HCI_MGMT_UNCONF_INDEX_EVENTS);
1342                         hci_sock_set_flag(sk, HCI_MGMT_OPTION_EVENTS);
1343                         hci_sock_set_flag(sk, HCI_MGMT_SETTING_EVENTS);
1344                         hci_sock_set_flag(sk, HCI_MGMT_DEV_CLASS_EVENTS);
1345                         hci_sock_set_flag(sk, HCI_MGMT_LOCAL_NAME_EVENTS);
1346                 }
1347                 break;
1348         }
1349
1350         sk->sk_state = BT_BOUND;
1351
1352 done:
1353         release_sock(sk);
1354         return err;
1355 }
1356
1357 static int hci_sock_getname(struct socket *sock, struct sockaddr *addr,
1358                             int peer)
1359 {
1360         struct sockaddr_hci *haddr = (struct sockaddr_hci *)addr;
1361         struct sock *sk = sock->sk;
1362         struct hci_dev *hdev;
1363         int err = 0;
1364
1365         BT_DBG("sock %p sk %p", sock, sk);
1366
1367         if (peer)
1368                 return -EOPNOTSUPP;
1369
1370         lock_sock(sk);
1371
1372         hdev = hci_pi(sk)->hdev;
1373         if (!hdev) {
1374                 err = -EBADFD;
1375                 goto done;
1376         }
1377
1378         haddr->hci_family = AF_BLUETOOTH;
1379         haddr->hci_dev    = hdev->id;
1380         haddr->hci_channel= hci_pi(sk)->channel;
1381         err = sizeof(*haddr);
1382
1383 done:
1384         release_sock(sk);
1385         return err;
1386 }
1387
1388 static void hci_sock_cmsg(struct sock *sk, struct msghdr *msg,
1389                           struct sk_buff *skb)
1390 {
1391         __u32 mask = hci_pi(sk)->cmsg_mask;
1392
1393         if (mask & HCI_CMSG_DIR) {
1394                 int incoming = bt_cb(skb)->incoming;
1395                 put_cmsg(msg, SOL_HCI, HCI_CMSG_DIR, sizeof(incoming),
1396                          &incoming);
1397         }
1398
1399         if (mask & HCI_CMSG_TSTAMP) {
1400 #ifdef CONFIG_COMPAT
1401                 struct old_timeval32 ctv;
1402 #endif
1403                 struct __kernel_old_timeval tv;
1404                 void *data;
1405                 int len;
1406
1407                 skb_get_timestamp(skb, &tv);
1408
1409                 data = &tv;
1410                 len = sizeof(tv);
1411 #ifdef CONFIG_COMPAT
1412                 if (!COMPAT_USE_64BIT_TIME &&
1413                     (msg->msg_flags & MSG_CMSG_COMPAT)) {
1414                         ctv.tv_sec = tv.tv_sec;
1415                         ctv.tv_usec = tv.tv_usec;
1416                         data = &ctv;
1417                         len = sizeof(ctv);
1418                 }
1419 #endif
1420
1421                 put_cmsg(msg, SOL_HCI, HCI_CMSG_TSTAMP, len, data);
1422         }
1423 }
1424
1425 static int hci_sock_recvmsg(struct socket *sock, struct msghdr *msg,
1426                             size_t len, int flags)
1427 {
1428         int noblock = flags & MSG_DONTWAIT;
1429         struct sock *sk = sock->sk;
1430         struct sk_buff *skb;
1431         int copied, err;
1432         unsigned int skblen;
1433
1434         BT_DBG("sock %p, sk %p", sock, sk);
1435
1436         if (flags & MSG_OOB)
1437                 return -EOPNOTSUPP;
1438
1439         if (hci_pi(sk)->channel == HCI_CHANNEL_LOGGING)
1440                 return -EOPNOTSUPP;
1441
1442         if (sk->sk_state == BT_CLOSED)
1443                 return 0;
1444
1445         skb = skb_recv_datagram(sk, flags, noblock, &err);
1446         if (!skb)
1447                 return err;
1448
1449         skblen = skb->len;
1450         copied = skb->len;
1451         if (len < copied) {
1452                 msg->msg_flags |= MSG_TRUNC;
1453                 copied = len;
1454         }
1455
1456         skb_reset_transport_header(skb);
1457         err = skb_copy_datagram_msg(skb, 0, msg, copied);
1458
1459         switch (hci_pi(sk)->channel) {
1460         case HCI_CHANNEL_RAW:
1461                 hci_sock_cmsg(sk, msg, skb);
1462                 break;
1463         case HCI_CHANNEL_USER:
1464         case HCI_CHANNEL_MONITOR:
1465                 sock_recv_timestamp(msg, sk, skb);
1466                 break;
1467         default:
1468                 if (hci_mgmt_chan_find(hci_pi(sk)->channel))
1469                         sock_recv_timestamp(msg, sk, skb);
1470                 break;
1471         }
1472
1473         skb_free_datagram(sk, skb);
1474
1475         if (flags & MSG_TRUNC)
1476                 copied = skblen;
1477
1478         return err ? : copied;
1479 }
1480
1481 static int hci_mgmt_cmd(struct hci_mgmt_chan *chan, struct sock *sk,
1482                         struct msghdr *msg, size_t msglen)
1483 {
1484         void *buf;
1485         u8 *cp;
1486         struct mgmt_hdr *hdr;
1487         u16 opcode, index, len;
1488         struct hci_dev *hdev = NULL;
1489         const struct hci_mgmt_handler *handler;
1490         bool var_len, no_hdev;
1491         int err;
1492
1493         BT_DBG("got %zu bytes", msglen);
1494
1495         if (msglen < sizeof(*hdr))
1496                 return -EINVAL;
1497
1498         buf = kmalloc(msglen, GFP_KERNEL);
1499         if (!buf)
1500                 return -ENOMEM;
1501
1502         if (memcpy_from_msg(buf, msg, msglen)) {
1503                 err = -EFAULT;
1504                 goto done;
1505         }
1506
1507         hdr = buf;
1508         opcode = __le16_to_cpu(hdr->opcode);
1509         index = __le16_to_cpu(hdr->index);
1510         len = __le16_to_cpu(hdr->len);
1511
1512         if (len != msglen - sizeof(*hdr)) {
1513                 err = -EINVAL;
1514                 goto done;
1515         }
1516
1517         if (chan->channel == HCI_CHANNEL_CONTROL) {
1518                 struct sk_buff *skb;
1519
1520                 /* Send event to monitor */
1521                 skb = create_monitor_ctrl_command(sk, index, opcode, len,
1522                                                   buf + sizeof(*hdr));
1523                 if (skb) {
1524                         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb,
1525                                             HCI_SOCK_TRUSTED, NULL);
1526                         kfree_skb(skb);
1527                 }
1528         }
1529
1530         if (opcode >= chan->handler_count ||
1531             chan->handlers[opcode].func == NULL) {
1532                 BT_DBG("Unknown op %u", opcode);
1533                 err = mgmt_cmd_status(sk, index, opcode,
1534                                       MGMT_STATUS_UNKNOWN_COMMAND);
1535                 goto done;
1536         }
1537
1538         handler = &chan->handlers[opcode];
1539
1540         if (!hci_sock_test_flag(sk, HCI_SOCK_TRUSTED) &&
1541             !(handler->flags & HCI_MGMT_UNTRUSTED)) {
1542                 err = mgmt_cmd_status(sk, index, opcode,
1543                                       MGMT_STATUS_PERMISSION_DENIED);
1544                 goto done;
1545         }
1546
1547         if (index != MGMT_INDEX_NONE) {
1548                 hdev = hci_dev_get(index);
1549                 if (!hdev) {
1550                         err = mgmt_cmd_status(sk, index, opcode,
1551                                               MGMT_STATUS_INVALID_INDEX);
1552                         goto done;
1553                 }
1554
1555                 if (hci_dev_test_flag(hdev, HCI_SETUP) ||
1556                     hci_dev_test_flag(hdev, HCI_CONFIG) ||
1557                     hci_dev_test_flag(hdev, HCI_USER_CHANNEL)) {
1558                         err = mgmt_cmd_status(sk, index, opcode,
1559                                               MGMT_STATUS_INVALID_INDEX);
1560                         goto done;
1561                 }
1562
1563                 if (hci_dev_test_flag(hdev, HCI_UNCONFIGURED) &&
1564                     !(handler->flags & HCI_MGMT_UNCONFIGURED)) {
1565                         err = mgmt_cmd_status(sk, index, opcode,
1566                                               MGMT_STATUS_INVALID_INDEX);
1567                         goto done;
1568                 }
1569         }
1570
1571         no_hdev = (handler->flags & HCI_MGMT_NO_HDEV);
1572         if (no_hdev != !hdev) {
1573                 err = mgmt_cmd_status(sk, index, opcode,
1574                                       MGMT_STATUS_INVALID_INDEX);
1575                 goto done;
1576         }
1577
1578         var_len = (handler->flags & HCI_MGMT_VAR_LEN);
1579         if ((var_len && len < handler->data_len) ||
1580             (!var_len && len != handler->data_len)) {
1581                 err = mgmt_cmd_status(sk, index, opcode,
1582                                       MGMT_STATUS_INVALID_PARAMS);
1583                 goto done;
1584         }
1585
1586         if (hdev && chan->hdev_init)
1587                 chan->hdev_init(sk, hdev);
1588
1589         cp = buf + sizeof(*hdr);
1590
1591         err = handler->func(sk, hdev, cp, len);
1592         if (err < 0)
1593                 goto done;
1594
1595         err = msglen;
1596
1597 done:
1598         if (hdev)
1599                 hci_dev_put(hdev);
1600
1601         kfree(buf);
1602         return err;
1603 }
1604
1605 static int hci_logging_frame(struct sock *sk, struct msghdr *msg, int len)
1606 {
1607         struct hci_mon_hdr *hdr;
1608         struct sk_buff *skb;
1609         struct hci_dev *hdev;
1610         u16 index;
1611         int err;
1612
1613         /* The logging frame consists at minimum of the standard header,
1614          * the priority byte, the ident length byte and at least one string
1615          * terminator NUL byte. Anything shorter are invalid packets.
1616          */
1617         if (len < sizeof(*hdr) + 3)
1618                 return -EINVAL;
1619
1620         skb = bt_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err);
1621         if (!skb)
1622                 return err;
1623
1624         if (memcpy_from_msg(skb_put(skb, len), msg, len)) {
1625                 err = -EFAULT;
1626                 goto drop;
1627         }
1628
1629         hdr = (void *)skb->data;
1630
1631         if (__le16_to_cpu(hdr->len) != len - sizeof(*hdr)) {
1632                 err = -EINVAL;
1633                 goto drop;
1634         }
1635
1636         if (__le16_to_cpu(hdr->opcode) == 0x0000) {
1637                 __u8 priority = skb->data[sizeof(*hdr)];
1638                 __u8 ident_len = skb->data[sizeof(*hdr) + 1];
1639
1640                 /* Only the priorities 0-7 are valid and with that any other
1641                  * value results in an invalid packet.
1642                  *
1643                  * The priority byte is followed by an ident length byte and
1644                  * the NUL terminated ident string. Check that the ident
1645                  * length is not overflowing the packet and also that the
1646                  * ident string itself is NUL terminated. In case the ident
1647                  * length is zero, the length value actually doubles as NUL
1648                  * terminator identifier.
1649                  *
1650                  * The message follows the ident string (if present) and
1651                  * must be NUL terminated. Otherwise it is not a valid packet.
1652                  */
1653                 if (priority > 7 || skb->data[len - 1] != 0x00 ||
1654                     ident_len > len - sizeof(*hdr) - 3 ||
1655                     skb->data[sizeof(*hdr) + ident_len + 1] != 0x00) {
1656                         err = -EINVAL;
1657                         goto drop;
1658                 }
1659         } else {
1660                 err = -EINVAL;
1661                 goto drop;
1662         }
1663
1664         index = __le16_to_cpu(hdr->index);
1665
1666         if (index != MGMT_INDEX_NONE) {
1667                 hdev = hci_dev_get(index);
1668                 if (!hdev) {
1669                         err = -ENODEV;
1670                         goto drop;
1671                 }
1672         } else {
1673                 hdev = NULL;
1674         }
1675
1676         hdr->opcode = cpu_to_le16(HCI_MON_USER_LOGGING);
1677
1678         hci_send_to_channel(HCI_CHANNEL_MONITOR, skb, HCI_SOCK_TRUSTED, NULL);
1679         err = len;
1680
1681         if (hdev)
1682                 hci_dev_put(hdev);
1683
1684 drop:
1685         kfree_skb(skb);
1686         return err;
1687 }
1688
1689 static int hci_sock_sendmsg(struct socket *sock, struct msghdr *msg,
1690                             size_t len)
1691 {
1692         struct sock *sk = sock->sk;
1693         struct hci_mgmt_chan *chan;
1694         struct hci_dev *hdev;
1695         struct sk_buff *skb;
1696         int err;
1697
1698         BT_DBG("sock %p sk %p", sock, sk);
1699
1700         if (msg->msg_flags & MSG_OOB)
1701                 return -EOPNOTSUPP;
1702
1703         if (msg->msg_flags & ~(MSG_DONTWAIT|MSG_NOSIGNAL|MSG_ERRQUEUE|
1704                                MSG_CMSG_COMPAT))
1705                 return -EINVAL;
1706
1707         if (len < 4 || len > HCI_MAX_FRAME_SIZE)
1708                 return -EINVAL;
1709
1710         lock_sock(sk);
1711
1712         switch (hci_pi(sk)->channel) {
1713         case HCI_CHANNEL_RAW:
1714         case HCI_CHANNEL_USER:
1715                 break;
1716         case HCI_CHANNEL_MONITOR:
1717                 err = -EOPNOTSUPP;
1718                 goto done;
1719         case HCI_CHANNEL_LOGGING:
1720                 err = hci_logging_frame(sk, msg, len);
1721                 goto done;
1722         default:
1723                 mutex_lock(&mgmt_chan_list_lock);
1724                 chan = __hci_mgmt_chan_find(hci_pi(sk)->channel);
1725                 if (chan)
1726                         err = hci_mgmt_cmd(chan, sk, msg, len);
1727                 else
1728                         err = -EINVAL;
1729
1730                 mutex_unlock(&mgmt_chan_list_lock);
1731                 goto done;
1732         }
1733
1734         hdev = hci_pi(sk)->hdev;
1735         if (!hdev) {
1736                 err = -EBADFD;
1737                 goto done;
1738         }
1739
1740         if (!test_bit(HCI_UP, &hdev->flags)) {
1741                 err = -ENETDOWN;
1742                 goto done;
1743         }
1744
1745         skb = bt_skb_send_alloc(sk, len, msg->msg_flags & MSG_DONTWAIT, &err);
1746         if (!skb)
1747                 goto done;
1748
1749         if (memcpy_from_msg(skb_put(skb, len), msg, len)) {
1750                 err = -EFAULT;
1751                 goto drop;
1752         }
1753
1754         hci_skb_pkt_type(skb) = skb->data[0];
1755         skb_pull(skb, 1);
1756
1757         if (hci_pi(sk)->channel == HCI_CHANNEL_USER) {
1758                 /* No permission check is needed for user channel
1759                  * since that gets enforced when binding the socket.
1760                  *
1761                  * However check that the packet type is valid.
1762                  */
1763                 if (hci_skb_pkt_type(skb) != HCI_COMMAND_PKT &&
1764                     hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
1765                     hci_skb_pkt_type(skb) != HCI_SCODATA_PKT) {
1766                         err = -EINVAL;
1767                         goto drop;
1768                 }
1769
1770                 skb_queue_tail(&hdev->raw_q, skb);
1771                 queue_work(hdev->workqueue, &hdev->tx_work);
1772         } else if (hci_skb_pkt_type(skb) == HCI_COMMAND_PKT) {
1773                 u16 opcode = get_unaligned_le16(skb->data);
1774                 u16 ogf = hci_opcode_ogf(opcode);
1775                 u16 ocf = hci_opcode_ocf(opcode);
1776
1777                 if (((ogf > HCI_SFLT_MAX_OGF) ||
1778                      !hci_test_bit(ocf & HCI_FLT_OCF_BITS,
1779                                    &hci_sec_filter.ocf_mask[ogf])) &&
1780                     !capable(CAP_NET_RAW)) {
1781                         err = -EPERM;
1782                         goto drop;
1783                 }
1784
1785                 /* Since the opcode has already been extracted here, store
1786                  * a copy of the value for later use by the drivers.
1787                  */
1788                 hci_skb_opcode(skb) = opcode;
1789
1790                 if (ogf == 0x3f) {
1791                         skb_queue_tail(&hdev->raw_q, skb);
1792                         queue_work(hdev->workqueue, &hdev->tx_work);
1793                 } else {
1794                         /* Stand-alone HCI commands must be flagged as
1795                          * single-command requests.
1796                          */
1797                         bt_cb(skb)->hci.req_flags |= HCI_REQ_START;
1798
1799                         skb_queue_tail(&hdev->cmd_q, skb);
1800                         queue_work(hdev->workqueue, &hdev->cmd_work);
1801                 }
1802         } else {
1803                 if (!capable(CAP_NET_RAW)) {
1804                         err = -EPERM;
1805                         goto drop;
1806                 }
1807
1808                 if (hci_skb_pkt_type(skb) != HCI_ACLDATA_PKT &&
1809                     hci_skb_pkt_type(skb) != HCI_SCODATA_PKT) {
1810                         err = -EINVAL;
1811                         goto drop;
1812                 }
1813
1814                 skb_queue_tail(&hdev->raw_q, skb);
1815                 queue_work(hdev->workqueue, &hdev->tx_work);
1816         }
1817
1818         err = len;
1819
1820 done:
1821         release_sock(sk);
1822         return err;
1823
1824 drop:
1825         kfree_skb(skb);
1826         goto done;
1827 }
1828
1829 static int hci_sock_setsockopt(struct socket *sock, int level, int optname,
1830                                char __user *optval, unsigned int len)
1831 {
1832         struct hci_ufilter uf = { .opcode = 0 };
1833         struct sock *sk = sock->sk;
1834         int err = 0, opt = 0;
1835
1836         BT_DBG("sk %p, opt %d", sk, optname);
1837
1838         if (level != SOL_HCI)
1839                 return -ENOPROTOOPT;
1840
1841         lock_sock(sk);
1842
1843         if (hci_pi(sk)->channel != HCI_CHANNEL_RAW) {
1844                 err = -EBADFD;
1845                 goto done;
1846         }
1847
1848         switch (optname) {
1849         case HCI_DATA_DIR:
1850                 if (get_user(opt, (int __user *)optval)) {
1851                         err = -EFAULT;
1852                         break;
1853                 }
1854
1855                 if (opt)
1856                         hci_pi(sk)->cmsg_mask |= HCI_CMSG_DIR;
1857                 else
1858                         hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_DIR;
1859                 break;
1860
1861         case HCI_TIME_STAMP:
1862                 if (get_user(opt, (int __user *)optval)) {
1863                         err = -EFAULT;
1864                         break;
1865                 }
1866
1867                 if (opt)
1868                         hci_pi(sk)->cmsg_mask |= HCI_CMSG_TSTAMP;
1869                 else
1870                         hci_pi(sk)->cmsg_mask &= ~HCI_CMSG_TSTAMP;
1871                 break;
1872
1873         case HCI_FILTER:
1874                 {
1875                         struct hci_filter *f = &hci_pi(sk)->filter;
1876
1877                         uf.type_mask = f->type_mask;
1878                         uf.opcode    = f->opcode;
1879                         uf.event_mask[0] = *((u32 *) f->event_mask + 0);
1880                         uf.event_mask[1] = *((u32 *) f->event_mask + 1);
1881                 }
1882
1883                 len = min_t(unsigned int, len, sizeof(uf));
1884                 if (copy_from_user(&uf, optval, len)) {
1885                         err = -EFAULT;
1886                         break;
1887                 }
1888
1889                 if (!capable(CAP_NET_RAW)) {
1890                         uf.type_mask &= hci_sec_filter.type_mask;
1891                         uf.event_mask[0] &= *((u32 *) hci_sec_filter.event_mask + 0);
1892                         uf.event_mask[1] &= *((u32 *) hci_sec_filter.event_mask + 1);
1893                 }
1894
1895                 {
1896                         struct hci_filter *f = &hci_pi(sk)->filter;
1897
1898                         f->type_mask = uf.type_mask;
1899                         f->opcode    = uf.opcode;
1900                         *((u32 *) f->event_mask + 0) = uf.event_mask[0];
1901                         *((u32 *) f->event_mask + 1) = uf.event_mask[1];
1902                 }
1903                 break;
1904
1905         default:
1906                 err = -ENOPROTOOPT;
1907                 break;
1908         }
1909
1910 done:
1911         release_sock(sk);
1912         return err;
1913 }
1914
1915 static int hci_sock_getsockopt(struct socket *sock, int level, int optname,
1916                                char __user *optval, int __user *optlen)
1917 {
1918         struct hci_ufilter uf;
1919         struct sock *sk = sock->sk;
1920         int len, opt, err = 0;
1921
1922         BT_DBG("sk %p, opt %d", sk, optname);
1923
1924         if (level != SOL_HCI)
1925                 return -ENOPROTOOPT;
1926
1927         if (get_user(len, optlen))
1928                 return -EFAULT;
1929
1930         lock_sock(sk);
1931
1932         if (hci_pi(sk)->channel != HCI_CHANNEL_RAW) {
1933                 err = -EBADFD;
1934                 goto done;
1935         }
1936
1937         switch (optname) {
1938         case HCI_DATA_DIR:
1939                 if (hci_pi(sk)->cmsg_mask & HCI_CMSG_DIR)
1940                         opt = 1;
1941                 else
1942                         opt = 0;
1943
1944                 if (put_user(opt, optval))
1945                         err = -EFAULT;
1946                 break;
1947
1948         case HCI_TIME_STAMP:
1949                 if (hci_pi(sk)->cmsg_mask & HCI_CMSG_TSTAMP)
1950                         opt = 1;
1951                 else
1952                         opt = 0;
1953
1954                 if (put_user(opt, optval))
1955                         err = -EFAULT;
1956                 break;
1957
1958         case HCI_FILTER:
1959                 {
1960                         struct hci_filter *f = &hci_pi(sk)->filter;
1961
1962                         memset(&uf, 0, sizeof(uf));
1963                         uf.type_mask = f->type_mask;
1964                         uf.opcode    = f->opcode;
1965                         uf.event_mask[0] = *((u32 *) f->event_mask + 0);
1966                         uf.event_mask[1] = *((u32 *) f->event_mask + 1);
1967                 }
1968
1969                 len = min_t(unsigned int, len, sizeof(uf));
1970                 if (copy_to_user(optval, &uf, len))
1971                         err = -EFAULT;
1972                 break;
1973
1974         default:
1975                 err = -ENOPROTOOPT;
1976                 break;
1977         }
1978
1979 done:
1980         release_sock(sk);
1981         return err;
1982 }
1983
1984 static const struct proto_ops hci_sock_ops = {
1985         .family         = PF_BLUETOOTH,
1986         .owner          = THIS_MODULE,
1987         .release        = hci_sock_release,
1988         .bind           = hci_sock_bind,
1989         .getname        = hci_sock_getname,
1990         .sendmsg        = hci_sock_sendmsg,
1991         .recvmsg        = hci_sock_recvmsg,
1992         .ioctl          = hci_sock_ioctl,
1993 #ifdef CONFIG_COMPAT
1994         .compat_ioctl   = hci_sock_compat_ioctl,
1995 #endif
1996         .poll           = datagram_poll,
1997         .listen         = sock_no_listen,
1998         .shutdown       = sock_no_shutdown,
1999         .setsockopt     = hci_sock_setsockopt,
2000         .getsockopt     = hci_sock_getsockopt,
2001         .connect        = sock_no_connect,
2002         .socketpair     = sock_no_socketpair,
2003         .accept         = sock_no_accept,
2004         .mmap           = sock_no_mmap
2005 };
2006
2007 static struct proto hci_sk_proto = {
2008         .name           = "HCI",
2009         .owner          = THIS_MODULE,
2010         .obj_size       = sizeof(struct hci_pinfo)
2011 };
2012
2013 static int hci_sock_create(struct net *net, struct socket *sock, int protocol,
2014                            int kern)
2015 {
2016         struct sock *sk;
2017
2018         BT_DBG("sock %p", sock);
2019
2020         if (sock->type != SOCK_RAW)
2021                 return -ESOCKTNOSUPPORT;
2022
2023         sock->ops = &hci_sock_ops;
2024
2025         sk = sk_alloc(net, PF_BLUETOOTH, GFP_ATOMIC, &hci_sk_proto, kern);
2026         if (!sk)
2027                 return -ENOMEM;
2028
2029         sock_init_data(sock, sk);
2030
2031         sock_reset_flag(sk, SOCK_ZAPPED);
2032
2033         sk->sk_protocol = protocol;
2034
2035         sock->state = SS_UNCONNECTED;
2036         sk->sk_state = BT_OPEN;
2037
2038         bt_sock_link(&hci_sk_list, sk);
2039         return 0;
2040 }
2041
2042 static const struct net_proto_family hci_sock_family_ops = {
2043         .family = PF_BLUETOOTH,
2044         .owner  = THIS_MODULE,
2045         .create = hci_sock_create,
2046 };
2047
2048 int __init hci_sock_init(void)
2049 {
2050         int err;
2051
2052         BUILD_BUG_ON(sizeof(struct sockaddr_hci) > sizeof(struct sockaddr));
2053
2054         err = proto_register(&hci_sk_proto, 0);
2055         if (err < 0)
2056                 return err;
2057
2058         err = bt_sock_register(BTPROTO_HCI, &hci_sock_family_ops);
2059         if (err < 0) {
2060                 BT_ERR("HCI socket registration failed");
2061                 goto error;
2062         }
2063
2064         err = bt_procfs_init(&init_net, "hci", &hci_sk_list, NULL);
2065         if (err < 0) {
2066                 BT_ERR("Failed to create HCI proc file");
2067                 bt_sock_unregister(BTPROTO_HCI);
2068                 goto error;
2069         }
2070
2071         BT_INFO("HCI socket layer initialized");
2072
2073         return 0;
2074
2075 error:
2076         proto_unregister(&hci_sk_proto);
2077         return err;
2078 }
2079
2080 void hci_sock_cleanup(void)
2081 {
2082         bt_procfs_cleanup(&init_net, "hci");
2083         bt_sock_unregister(BTPROTO_HCI);
2084         proto_unregister(&hci_sk_proto);
2085 }