Merge tag 'dt-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / net / bluetooth / af_bluetooth.c
index 0d1b08cc76e1d73acba966e4c22f64c0285cce05..9096137c889c4857507fcb60828b8d7ad581f424 100644 (file)
@@ -92,23 +92,14 @@ int bt_sock_register(int proto, const struct net_proto_family *ops)
 }
 EXPORT_SYMBOL(bt_sock_register);
 
-int bt_sock_unregister(int proto)
+void bt_sock_unregister(int proto)
 {
-       int err = 0;
-
        if (proto < 0 || proto >= BT_MAX_PROTO)
-               return -EINVAL;
+               return;
 
        write_lock(&bt_proto_lock);
-
-       if (!bt_proto[proto])
-               err = -ENOENT;
-       else
-               bt_proto[proto] = NULL;
-
+       bt_proto[proto] = NULL;
        write_unlock(&bt_proto_lock);
-
-       return err;
 }
 EXPORT_SYMBOL(bt_sock_unregister);
 
@@ -422,7 +413,8 @@ unsigned int bt_sock_poll(struct file *file, struct socket *sock,
                return bt_accept_poll(sk);
 
        if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue))
-               mask |= POLLERR;
+               mask |= POLLERR |
+                       (sock_flag(sk, SOCK_SELECT_ERR_QUEUE) ? POLLPRI : 0);
 
        if (sk->sk_shutdown & RCV_SHUTDOWN)
                mask |= POLLRDHUP | POLLIN | POLLRDNORM;
@@ -617,7 +609,7 @@ static int bt_seq_open(struct inode *inode, struct file *file)
        struct bt_sock_list *sk_list;
        struct bt_seq_state *s;
 
-       sk_list = PDE(inode)->data;
+       sk_list = PDE_DATA(inode);
        s = __seq_open_private(file, &bt_seq_ops,
                               sizeof(struct bt_seq_state));
        if (!s)
@@ -627,26 +619,21 @@ static int bt_seq_open(struct inode *inode, struct file *file)
        return 0;
 }
 
-int bt_procfs_init(struct module* module, struct net *net, const char *name,
+static const struct file_operations bt_fops = {
+       .open = bt_seq_open,
+       .read = seq_read,
+       .llseek = seq_lseek,
+       .release = seq_release_private
+};
+
+int bt_procfs_init(struct net *net, const char *name,
                   struct bt_sock_list* sk_list,
                   int (* seq_show)(struct seq_file *, void *))
 {
-       struct proc_dir_entry * pde;
-
        sk_list->custom_seq_show = seq_show;
 
-       sk_list->fops.owner     = module;
-       sk_list->fops.open      = bt_seq_open;
-       sk_list->fops.read      = seq_read;
-       sk_list->fops.llseek    = seq_lseek;
-       sk_list->fops.release   = seq_release_private;
-
-       pde = proc_create(name, 0, net->proc_net, &sk_list->fops);
-       if (!pde)
+       if (!proc_create_data(name, 0, net->proc_net, &bt_fops, sk_list))
                return -ENOMEM;
-
-       pde->data = sk_list;
-
        return 0;
 }
 
@@ -655,7 +642,7 @@ void bt_procfs_cleanup(struct net *net, const char *name)
        remove_proc_entry(name, net->proc_net);
 }
 #else
-int bt_procfs_init(struct module* module, struct net *net, const char *name,
+int bt_procfs_init(struct net *net, const char *name,
                   struct bt_sock_list* sk_list,
                   int (* seq_show)(struct seq_file *, void *))
 {