| From 76aa9b63b7bc49f963487c846031d9809116bfbc Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 20 May 2021 13:35:17 +0200 |
| Subject: firmware: turris-mox-rwtm: fix reply status decoding function |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Marek Behún <kabel@kernel.org> |
| |
| [ Upstream commit e34e60253d9272311831daed8a2d967cf80ca3dc ] |
| |
| The status decoding function mox_get_status() currently contains an |
| incorrect check: if the error status is not MBOX_STS_SUCCESS, it always |
| returns -EIO, so the comparison to MBOX_STS_FAIL is never executed and |
| we don't get the actual error code sent by the firmware. |
| |
| Fix this. |
| |
| Signed-off-by: Marek Behún <kabel@kernel.org> |
| Reviewed-by: Pali Rohár <pali@kernel.org> |
| Reviewed-by: Andrew Lunn <andrew@lunn.ch> |
| Fixes: 389711b37493 ("firmware: Add Turris Mox rWTM firmware driver") |
| Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/firmware/turris-mox-rwtm.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/firmware/turris-mox-rwtm.c b/drivers/firmware/turris-mox-rwtm.c |
| index 62f0d1a5dd32..f85acdb3130c 100644 |
| --- a/drivers/firmware/turris-mox-rwtm.c |
| +++ b/drivers/firmware/turris-mox-rwtm.c |
| @@ -147,11 +147,14 @@ MOX_ATTR_RO(pubkey, "%s\n", pubkey); |
| |
| static int mox_get_status(enum mbox_cmd cmd, u32 retval) |
| { |
| - if (MBOX_STS_CMD(retval) != cmd || |
| - MBOX_STS_ERROR(retval) != MBOX_STS_SUCCESS) |
| + if (MBOX_STS_CMD(retval) != cmd) |
| return -EIO; |
| else if (MBOX_STS_ERROR(retval) == MBOX_STS_FAIL) |
| return -(int)MBOX_STS_VALUE(retval); |
| + else if (MBOX_STS_ERROR(retval) == MBOX_STS_BADCMD) |
| + return -ENOSYS; |
| + else if (MBOX_STS_ERROR(retval) != MBOX_STS_SUCCESS) |
| + return -EIO; |
| else |
| return MBOX_STS_VALUE(retval); |
| } |
| -- |
| 2.30.2 |
| |