Merge branch 'kvm-updates/3.1' of git://git.kernel.org/pub/scm/virt/kvm/kvm
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / bluetooth / hci_sock.c
index 295e4a88fff8ccea7e197560d47f90bc6584b7df..ff02cf5e77ccdd576d2f42f78f2c4715e3a47d5e 100644 (file)
@@ -180,82 +180,24 @@ static int hci_sock_release(struct socket *sock)
        return 0;
 }
 
-struct bdaddr_list *hci_blacklist_lookup(struct hci_dev *hdev, bdaddr_t *bdaddr)
-{
-       struct list_head *p;
-
-       list_for_each(p, &hdev->blacklist) {
-               struct bdaddr_list *b;
-
-               b = list_entry(p, struct bdaddr_list, list);
-
-               if (bacmp(bdaddr, &b->bdaddr) == 0)
-                       return b;
-       }
-
-       return NULL;
-}
-
-static int hci_blacklist_add(struct hci_dev *hdev, void __user *arg)
+static int hci_sock_blacklist_add(struct hci_dev *hdev, void __user *arg)
 {
        bdaddr_t bdaddr;
-       struct bdaddr_list *entry;
 
        if (copy_from_user(&bdaddr, arg, sizeof(bdaddr)))
                return -EFAULT;
 
-       if (bacmp(&bdaddr, BDADDR_ANY) == 0)
-               return -EBADF;
-
-       if (hci_blacklist_lookup(hdev, &bdaddr))
-               return -EEXIST;
-
-       entry = kzalloc(sizeof(struct bdaddr_list), GFP_KERNEL);
-       if (!entry)
-               return -ENOMEM;
-
-       bacpy(&entry->bdaddr, &bdaddr);
-
-       list_add(&entry->list, &hdev->blacklist);
-
-       return 0;
-}
-
-int hci_blacklist_clear(struct hci_dev *hdev)
-{
-       struct list_head *p, *n;
-
-       list_for_each_safe(p, n, &hdev->blacklist) {
-               struct bdaddr_list *b;
-
-               b = list_entry(p, struct bdaddr_list, list);
-
-               list_del(p);
-               kfree(b);
-       }
-
-       return 0;
+       return hci_blacklist_add(hdev, &bdaddr);
 }
 
-static int hci_blacklist_del(struct hci_dev *hdev, void __user *arg)
+static int hci_sock_blacklist_del(struct hci_dev *hdev, void __user *arg)
 {
        bdaddr_t bdaddr;
-       struct bdaddr_list *entry;
 
        if (copy_from_user(&bdaddr, arg, sizeof(bdaddr)))
                return -EFAULT;
 
-       if (bacmp(&bdaddr, BDADDR_ANY) == 0)
-               return hci_blacklist_clear(hdev);
-
-       entry = hci_blacklist_lookup(hdev, &bdaddr);
-       if (!entry)
-               return -ENOENT;
-
-       list_del(&entry->list);
-       kfree(entry);
-
-       return 0;
+       return hci_blacklist_del(hdev, &bdaddr);
 }
 
 /* Ioctls that require bound socket */
@@ -290,12 +232,12 @@ static inline int hci_sock_bound_ioctl(struct sock *sk, unsigned int cmd, unsign
        case HCIBLOCKADDR:
                if (!capable(CAP_NET_ADMIN))
                        return -EACCES;
-               return hci_blacklist_add(hdev, (void __user *) arg);
+               return hci_sock_blacklist_add(hdev, (void __user *) arg);
 
        case HCIUNBLOCKADDR:
                if (!capable(CAP_NET_ADMIN))
                        return -EACCES;
-               return hci_blacklist_del(hdev, (void __user *) arg);
+               return hci_sock_blacklist_del(hdev, (void __user *) arg);
 
        default:
                if (hdev->ioctl)