]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
staging: vchiq_arm: introduce free_bulk_waiter
authorStefan Wahren <stefan.wahren@i2se.com>
Thu, 3 Jun 2021 15:49:51 +0000 (17:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 4 Jun 2021 13:10:02 +0000 (15:10 +0200)
Avoid the copy & paste of freeing the bulk waiter and move it into a
separate function. Found by CPD.

Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1622735405-9980-3-git-send-email-stefan.wahren@i2se.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c

index afbf01b7364ccbc93c03c04e86a3b0e5b80da0d7..2139b8dcba518dedaf702d024f7e07bf554833a1 100644 (file)
@@ -199,11 +199,24 @@ failed:
 }
 EXPORT_SYMBOL(vchiq_initialise);
 
+static void free_bulk_waiter(struct vchiq_instance *instance)
+{
+       struct bulk_waiter_node *waiter, *next;
+
+       list_for_each_entry_safe(waiter, next,
+                                &instance->bulk_waiter_list, list) {
+               list_del(&waiter->list);
+               vchiq_log_info(vchiq_arm_log_level,
+                               "bulk_waiter - cleaned up %pK for pid %d",
+                               waiter, waiter->pid);
+               kfree(waiter);
+       }
+}
+
 enum vchiq_status vchiq_shutdown(struct vchiq_instance *instance)
 {
        enum vchiq_status status = VCHIQ_SUCCESS;
        struct vchiq_state *state = instance->state;
-       struct bulk_waiter_node *waiter, *next;
 
        if (mutex_lock_killable(&state->mutex))
                return VCHIQ_RETRY;
@@ -216,14 +229,7 @@ enum vchiq_status vchiq_shutdown(struct vchiq_instance *instance)
        vchiq_log_trace(vchiq_core_log_level,
                "%s(%p): returning %d", __func__, instance, status);
 
-       list_for_each_entry_safe(waiter, next,
-                                &instance->bulk_waiter_list, list) {
-               list_del(&waiter->list);
-               vchiq_log_info(vchiq_arm_log_level,
-                               "bulk_waiter - cleaned up %pK for pid %d",
-                               waiter, waiter->pid);
-               kfree(waiter);
-       }
+       free_bulk_waiter(instance);
        kfree(instance);
 
        return status;
@@ -1943,18 +1949,7 @@ static int vchiq_release(struct inode *inode, struct file *file)
        /* Release the PEER service count. */
        vchiq_release_internal(instance->state, NULL);
 
-       {
-               struct bulk_waiter_node *waiter, *next;
-
-               list_for_each_entry_safe(waiter, next,
-                                        &instance->bulk_waiter_list, list) {
-                       list_del(&waiter->list);
-                       vchiq_log_info(vchiq_arm_log_level,
-                               "bulk_waiter - cleaned up %pK for pid %d",
-                               waiter, waiter->pid);
-                       kfree(waiter);
-               }
-       }
+       free_bulk_waiter(instance);
 
        vchiq_debugfs_remove_instance(instance);