Message ID | 20210506090802.14268-1-pali@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3,mvebu,+,mvebu/dt64,1/6] firmware: turris-mox-rwtm: fix reply status decoding function | expand |
On Thu, May 06, 2021 at 11:07:57AM +0200, Pali Rohár wrote: > From: Marek Behún <kabel@kernel.org> > > 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> > Fixes: 389711b37493 ("firmware: Add Turris Mox rWTM firmware driver") Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
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); }