]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mfd: qnap-mcu: Convert to guard(mutex) in qnap_mcu_exec
authorHeiko Stuebner <heiko@sntech.de>
Mon, 4 Aug 2025 13:07:25 +0000 (15:07 +0200)
committerLee Jones <lee@kernel.org>
Wed, 1 Oct 2025 09:28:15 +0000 (10:28 +0100)
guard() makes sure that the mutex gets unlocked when the function returns
and thus removes the need for unlock gotos or similar mechanisms and
therefore allows for a simpler function structure.

So convert the qnap_mcu_exec function to use it.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20250804130726.3180806-4-heiko@sntech.de
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/qnap-mcu.c

index e794efb6ecb1978e6e2fa9ff5c3447a9964bf60f..6875f27151e9c4ce104d9927544be135168a9ca3 100644 (file)
@@ -156,7 +156,7 @@ int qnap_mcu_exec(struct qnap_mcu *mcu,
                return -EINVAL;
        }
 
-       mutex_lock(&mcu->bus_lock);
+       guard(mutex)(&mcu->bus_lock);
 
        reply->data = rx;
        reply->length = length;
@@ -164,30 +164,27 @@ int qnap_mcu_exec(struct qnap_mcu *mcu,
        reinit_completion(&reply->done);
 
        ret = qnap_mcu_write(mcu, cmd_data, cmd_data_size);
-       if (ret < 0) {
-               mutex_unlock(&mcu->bus_lock);
+       if (ret < 0)
                return ret;
-       }
 
        serdev_device_wait_until_sent(mcu->serdev, msecs_to_jiffies(QNAP_MCU_TIMEOUT_MS));
 
        if (!wait_for_completion_timeout(&reply->done, msecs_to_jiffies(QNAP_MCU_TIMEOUT_MS))) {
                dev_err(&mcu->serdev->dev, "Command timeout\n");
-               ret = -ETIMEDOUT;
+               return -ETIMEDOUT;
        } else {
                u8 crc = qnap_mcu_csum(rx, reply_data_size);
 
                if (crc != rx[reply_data_size]) {
                        dev_err(&mcu->serdev->dev,
                                "Invalid Checksum received\n");
-                       ret = -EIO;
+                       return -EIO;
                } else {
                        memcpy(reply_data, rx, reply_data_size);
                }
        }
 
-       mutex_unlock(&mcu->bus_lock);
-       return ret;
+       return 0;
 }
 EXPORT_SYMBOL_GPL(qnap_mcu_exec);