firmware: arm_sdei: Remove while loop in sdei_event_register()
authorGavin Shan <gshan@redhat.com>
Tue, 22 Sep 2020 13:04:18 +0000 (23:04 +1000)
committerWill Deacon <will@kernel.org>
Mon, 28 Sep 2020 20:52:22 +0000 (21:52 +0100)
This removes the unnecessary while loop in sdei_event_register()
because of the following two reasons. This shouldn't cause any
functional changes.

   * The while loop is executed for once, meaning it's not needed
     in theory.
   * With the while loop removed, the nested statements can be
     avoid to make the code a bit cleaner.

Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Link: https://lore.kernel.org/r/20200922130423.10173-9-gshan@redhat.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/firmware/arm_sdei.c

index 4caeef3..6595bd6 100644 (file)
@@ -590,36 +590,34 @@ int sdei_event_register(u32 event_num, sdei_event_callback *cb, void *arg)
        WARN_ON(in_nmi());
 
        mutex_lock(&sdei_events_lock);
-       do {
-               if (sdei_event_find(event_num)) {
-                       pr_warn("Event %u already registered\n", event_num);
-                       err = -EBUSY;
-                       break;
-               }
+       if (sdei_event_find(event_num)) {
+               pr_warn("Event %u already registered\n", event_num);
+               err = -EBUSY;
+               goto unlock;
+       }
 
-               event = sdei_event_create(event_num, cb, arg);
-               if (IS_ERR(event)) {
-                       err = PTR_ERR(event);
-                       pr_warn("Failed to create event %u: %d\n", event_num,
-                               err);
-                       break;
-               }
+       event = sdei_event_create(event_num, cb, arg);
+       if (IS_ERR(event)) {
+               err = PTR_ERR(event);
+               pr_warn("Failed to create event %u: %d\n", event_num, err);
+               goto unlock;
+       }
 
-               cpus_read_lock();
-               err = _sdei_event_register(event);
-               if (err) {
-                       sdei_event_destroy(event);
-                       pr_warn("Failed to register event %u: %d\n", event_num,
-                               err);
-               } else {
-                       spin_lock(&sdei_list_lock);
-                       event->reregister = true;
-                       spin_unlock(&sdei_list_lock);
-               }
-               cpus_read_unlock();
-       } while (0);
-       mutex_unlock(&sdei_events_lock);
+       cpus_read_lock();
+       err = _sdei_event_register(event);
+       if (err) {
+               sdei_event_destroy(event);
+               pr_warn("Failed to register event %u: %d\n", event_num, err);
+               goto cpu_unlock;
+       }
 
+       spin_lock(&sdei_list_lock);
+       event->reregister = true;
+       spin_unlock(&sdei_list_lock);
+cpu_unlock:
+       cpus_read_unlock();
+unlock:
+       mutex_unlock(&sdei_events_lock);
        return err;
 }