| From a4e61de63e34860c36a71d1a364edba16fb6203b Mon Sep 17 00:00:00 2001 |
| From: Ekansh Gupta <quic_ekangupt@quicinc.com> |
| Date: Mon, 8 Jan 2024 17:18:33 +0530 |
| Subject: misc: fastrpc: Mark all sessions as invalid in cb_remove |
| |
| From: Ekansh Gupta <quic_ekangupt@quicinc.com> |
| |
| commit a4e61de63e34860c36a71d1a364edba16fb6203b upstream. |
| |
| In remoteproc shutdown sequence, rpmsg_remove will get called which |
| would depopulate all the child nodes that have been created during |
| rpmsg_probe. This would result in cb_remove call for all the context |
| banks for the remoteproc. In cb_remove function, session 0 is |
| getting skipped which is not correct as session 0 will never become |
| available again. Add changes to mark session 0 also as invalid. |
| |
| Fixes: f6f9279f2bf0 ("misc: fastrpc: Add Qualcomm fastrpc basic driver model") |
| Cc: stable <stable@kernel.org> |
| Signed-off-by: Ekansh Gupta <quic_ekangupt@quicinc.com> |
| Link: https://lore.kernel.org/r/20240108114833.20480-1-quic_ekangupt@quicinc.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/misc/fastrpc.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/misc/fastrpc.c |
| +++ b/drivers/misc/fastrpc.c |
| @@ -2191,7 +2191,7 @@ static int fastrpc_cb_remove(struct plat |
| int i; |
| |
| spin_lock_irqsave(&cctx->lock, flags); |
| - for (i = 1; i < FASTRPC_MAX_SESSIONS; i++) { |
| + for (i = 0; i < FASTRPC_MAX_SESSIONS; i++) { |
| if (cctx->session[i].sid == sess->sid) { |
| cctx->session[i].valid = false; |
| cctx->sesscount--; |