/* Apply filter */
flt = &hci_pi(sk)->filter;
- if (!test_bit((skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask))
+ if (!test_bit((skb->pkt_type == HCI_VENDOR_PKT) ?
+ 0 : (skb->pkt_type & HCI_FLT_TYPE_BITS), &flt->type_mask))
continue;
if (skb->pkt_type == HCI_EVENT_PKT) {
return 0;
+ case HCISETSECMGR:
+ if (!capable(CAP_NET_ADMIN))
+ return -EACCES;
+
+ if (arg)
+ set_bit(HCI_SECMGR, &hdev->flags);
+ else
+ clear_bit(HCI_SECMGR, &hdev->flags);
+
+ return 0;
+
case HCIGETCONNINFO:
return hci_get_conn_info(hdev, (void __user *)arg);