Skip to content

Commit 1bbc755

Browse files
Gavin Shanwilldeacon
authored andcommitted
firmware: arm_sdei: Remove while loop in sdei_event_register()
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>
1 parent 101119a commit 1bbc755

1 file changed

Lines changed: 25 additions & 27 deletions

File tree

drivers/firmware/arm_sdei.c

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -590,36 +590,34 @@ int sdei_event_register(u32 event_num, sdei_event_callback *cb, void *arg)
590590
WARN_ON(in_nmi());
591591

592592
mutex_lock(&sdei_events_lock);
593-
do {
594-
if (sdei_event_find(event_num)) {
595-
pr_warn("Event %u already registered\n", event_num);
596-
err = -EBUSY;
597-
break;
598-
}
593+
if (sdei_event_find(event_num)) {
594+
pr_warn("Event %u already registered\n", event_num);
595+
err = -EBUSY;
596+
goto unlock;
597+
}
599598

600-
event = sdei_event_create(event_num, cb, arg);
601-
if (IS_ERR(event)) {
602-
err = PTR_ERR(event);
603-
pr_warn("Failed to create event %u: %d\n", event_num,
604-
err);
605-
break;
606-
}
599+
event = sdei_event_create(event_num, cb, arg);
600+
if (IS_ERR(event)) {
601+
err = PTR_ERR(event);
602+
pr_warn("Failed to create event %u: %d\n", event_num, err);
603+
goto unlock;
604+
}
607605

608-
cpus_read_lock();
609-
err = _sdei_event_register(event);
610-
if (err) {
611-
sdei_event_destroy(event);
612-
pr_warn("Failed to register event %u: %d\n", event_num,
613-
err);
614-
} else {
615-
spin_lock(&sdei_list_lock);
616-
event->reregister = true;
617-
spin_unlock(&sdei_list_lock);
618-
}
619-
cpus_read_unlock();
620-
} while (0);
621-
mutex_unlock(&sdei_events_lock);
606+
cpus_read_lock();
607+
err = _sdei_event_register(event);
608+
if (err) {
609+
sdei_event_destroy(event);
610+
pr_warn("Failed to register event %u: %d\n", event_num, err);
611+
goto cpu_unlock;
612+
}
622613

614+
spin_lock(&sdei_list_lock);
615+
event->reregister = true;
616+
spin_unlock(&sdei_list_lock);
617+
cpu_unlock:
618+
cpus_read_unlock();
619+
unlock:
620+
mutex_unlock(&sdei_events_lock);
623621
return err;
624622
}
625623

0 commit comments

Comments
 (0)