staging: vchiq_core: break early in vchiq_close_service_internal
authorStefan Wahren <stefan.wahren@i2se.com>
Sun, 25 Apr 2021 10:50:54 +0000 (12:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 May 2021 09:19:27 +0000 (11:19 +0200)
The logic in VCHIQ_SRVSTATE_OPEN* is unnecessary complex. Handle the error
case of queue_message() first makes it easier to read.

Btw we get the rid of the checkpatch warning:
WARNING: else is not generally useful after a break or return

Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
Link: https://lore.kernel.org/r/1619347863-16080-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_core.c

index 517a8c9..8a1e6f5 100644 (file)
@@ -2763,21 +2763,21 @@ vchiq_close_service_internal(struct vchiq_service *service, int close_recvd)
                                VCHIQ_MSG_DSTPORT(service->remoteport)),
                                NULL, NULL, 0, QMFLAGS_NO_MUTEX_UNLOCK);
 
-               if (status == VCHIQ_SUCCESS) {
-                       if (!close_recvd) {
-                               /* Change the state while the mutex is still held */
-                               vchiq_set_service_state(service,
-                                                       VCHIQ_SRVSTATE_CLOSESENT);
-                               mutex_unlock(&state->slot_mutex);
-                               if (service->sync)
-                                       mutex_unlock(&state->sync_mutex);
-                               break;
-                       }
-               } else if (service->srvstate == VCHIQ_SRVSTATE_OPENSYNC) {
-                       mutex_unlock(&state->sync_mutex);
+               if (status != VCHIQ_SUCCESS) {
+                       if (service->srvstate == VCHIQ_SRVSTATE_OPENSYNC)
+                               mutex_unlock(&state->sync_mutex);
                        break;
-               } else
+               }
+
+               if (!close_recvd) {
+                       /* Change the state while the mutex is still held */
+                       vchiq_set_service_state(service,
+                                               VCHIQ_SRVSTATE_CLOSESENT);
+                       mutex_unlock(&state->slot_mutex);
+                       if (service->sync)
+                               mutex_unlock(&state->sync_mutex);
                        break;
+               }
 
                /* Change the state while the mutex is still held */
                vchiq_set_service_state(service, VCHIQ_SRVSTATE_CLOSERECVD);