]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
bluetooth: switch to proc_create_seq_data
authorChristoph Hellwig <hch@lst.de>
Sun, 15 Apr 2018 08:27:22 +0000 (10:27 +0200)
committerChristoph Hellwig <hch@lst.de>
Wed, 16 May 2018 05:24:30 +0000 (07:24 +0200)
And use proc private data directly instead of doing a detour
through seq->private and private state.

Signed-off-by: Christoph Hellwig <hch@lst.de>
net/bluetooth/af_bluetooth.c

index 84d92a0778343d0ee99f71ad3d691ca716ed36c6..3264e1873219bd40b8c1ccfc2ce6c40d96ca0030 100644 (file)
@@ -605,15 +605,10 @@ int bt_sock_wait_ready(struct sock *sk, unsigned long flags)
 EXPORT_SYMBOL(bt_sock_wait_ready);
 
 #ifdef CONFIG_PROC_FS
-struct bt_seq_state {
-       struct bt_sock_list *l;
-};
-
 static void *bt_seq_start(struct seq_file *seq, loff_t *pos)
        __acquires(seq->private->l->lock)
 {
-       struct bt_seq_state *s = seq->private;
-       struct bt_sock_list *l = s->l;
+       struct bt_sock_list *l = PDE_DATA(file_inode(seq->file));
 
        read_lock(&l->lock);
        return seq_hlist_start_head(&l->head, *pos);
@@ -621,8 +616,7 @@ static void *bt_seq_start(struct seq_file *seq, loff_t *pos)
 
 static void *bt_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 {
-       struct bt_seq_state *s = seq->private;
-       struct bt_sock_list *l = s->l;
+       struct bt_sock_list *l = PDE_DATA(file_inode(seq->file));
 
        return seq_hlist_next(v, &l->head, pos);
 }
@@ -630,16 +624,14 @@ static void *bt_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 static void bt_seq_stop(struct seq_file *seq, void *v)
        __releases(seq->private->l->lock)
 {
-       struct bt_seq_state *s = seq->private;
-       struct bt_sock_list *l = s->l;
+       struct bt_sock_list *l = PDE_DATA(file_inode(seq->file));
 
        read_unlock(&l->lock);
 }
 
 static int bt_seq_show(struct seq_file *seq, void *v)
 {
-       struct bt_seq_state *s = seq->private;
-       struct bt_sock_list *l = s->l;
+       struct bt_sock_list *l = PDE_DATA(file_inode(seq->file));
 
        if (v == SEQ_START_TOKEN) {
                seq_puts(seq ,"sk               RefCnt Rmem   Wmem   User   Inode  Parent");
@@ -681,35 +673,13 @@ static const struct seq_operations bt_seq_ops = {
        .show  = bt_seq_show,
 };
 
-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_DATA(inode);
-       s = __seq_open_private(file, &bt_seq_ops,
-                              sizeof(struct bt_seq_state));
-       if (!s)
-               return -ENOMEM;
-
-       s->l = sk_list;
-       return 0;
-}
-
-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 *))
 {
        sk_list->custom_seq_show = seq_show;
 
-       if (!proc_create_data(name, 0, net->proc_net, &bt_fops, sk_list))
+       if (!proc_create_seq_data(name, 0, net->proc_net, &bt_seq_ops, sk_list))
                return -ENOMEM;
        return 0;
 }