char: misc: remove usage of list iterator past the loop body
authorJakob Koschel <jakobkoschel@gmail.com>
Sat, 19 Mar 2022 20:14:54 +0000 (21:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 24 Apr 2022 15:15:12 +0000 (17:15 +0200)
In preparation to limit the scope of the list iterator to the list
traversal loop, use a dedicated pointer pointing to the found element [1].

Link: https://lore.kernel.org/all/YhdfEIwI4EdtHdym@kroah.com/
Signed-off-by: Jakob Koschel <jakobkoschel@gmail.com>
Link: https://lore.kernel.org/r/20220319201454.2511733-1-jakobkoschel@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/misc.c

index ca5141e..cba19bf 100644 (file)
@@ -100,17 +100,18 @@ static const struct seq_operations misc_seq_ops = {
 static int misc_open(struct inode *inode, struct file *file)
 {
        int minor = iminor(inode);
-       struct miscdevice *c;
+       struct miscdevice *c = NULL, *iter;
        int err = -ENODEV;
        const struct file_operations *new_fops = NULL;
 
        mutex_lock(&misc_mtx);
 
-       list_for_each_entry(c, &misc_list, list) {
-               if (c->minor == minor) {
-                       new_fops = fops_get(c->fops);
-                       break;
-               }
+       list_for_each_entry(iter, &misc_list, list) {
+               if (iter->minor != minor)
+                       continue;
+               c = iter;
+               new_fops = fops_get(iter->fops);
+               break;
        }
 
        if (!new_fops) {
@@ -118,11 +119,12 @@ static int misc_open(struct inode *inode, struct file *file)
                request_module("char-major-%d-%d", MISC_MAJOR, minor);
                mutex_lock(&misc_mtx);
 
-               list_for_each_entry(c, &misc_list, list) {
-                       if (c->minor == minor) {
-                               new_fops = fops_get(c->fops);
-                               break;
-                       }
+               list_for_each_entry(iter, &misc_list, list) {
+                       if (iter->minor != minor)
+                               continue;
+                       c = iter;
+                       new_fops = fops_get(iter->fops);
+                       break;
                }
                if (!new_fops)
                        goto fail;