bus/fslmc: unlock spinlock in case of timeout
Checks
Commit Message
Commit 79711846f6 introduces timeouts to mc, but in case of
a timeout, the spinlock that was locked before isn't unlocked.
Fixes: 79711846f6 ("bus/fslmc: add timeout in MC send command API")
Signed-off-by: Alvaro Karsz <alvaro.karsz@solid-run.com>
---
drivers/bus/fslmc/mc/mc_sys.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Comments
Sorry guys, I got test-report errors.
The commit id format is wrong and it seems that I have an indentation error.
I will fix it and submit a new version.
@@ -77,8 +77,12 @@ int mc_send_command(struct fsl_mc_io *mc_io, struct mc_command *cmd)
total_time = rte_get_timer_cycles() - start_time;
} while (status == MC_CMD_STATUS_READY && total_time <= time_to_wait);
- if (status == MC_CMD_STATUS_READY)
+ if (status == MC_CMD_STATUS_READY) {
+ /* --- Call unlock function here in case portal is shared --- */
+ rte_spinlock_unlock(&mc_portal_lock);
+
return mc_status_to_error(MC_CMD_STATUS_TIMEOUT);
+ }
/* Read the response back into the command buffer */
mc_read_response(mc_io->regs, cmd);