[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250804130726.3180806-4-heiko@sntech.de>
Date: Mon, 4 Aug 2025 15:07:25 +0200
From: Heiko Stuebner <heiko@...ech.de>
To: lee@...nel.org
Cc: heiko@...ech.de,
linux-kernel@...r.kernel.org
Subject: [PATCH 3/4] mfd: qnap-mcu: convert to guard(mutex) in qnap_mcu_exec
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@...ech.de>
---
drivers/mfd/qnap-mcu.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/drivers/mfd/qnap-mcu.c b/drivers/mfd/qnap-mcu.c
index 6448237c4c35..7bc44c64b7fd 100644
--- a/drivers/mfd/qnap-mcu.c
+++ b/drivers/mfd/qnap-mcu.c
@@ -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);
--
2.47.2
Powered by blists - more mailing lists