| From 1c8093591d1e372d700fe65423e7315a8ecf721b Mon Sep 17 00:00:00 2001 |
| From: Ekansh Gupta <quic_ekangupt@quicinc.com> |
| Date: Fri, 13 Oct 2023 13:20:06 +0100 |
| Subject: misc: fastrpc: Clean buffers on remote invocation failures |
| |
| From: Ekansh Gupta <quic_ekangupt@quicinc.com> |
| |
| commit 1c8093591d1e372d700fe65423e7315a8ecf721b upstream. |
| |
| With current design, buffers and dma handles are not freed in case |
| of remote invocation failures returned from DSP. This could result |
| in buffer leakings and dma handle pointing to wrong memory in the |
| fastrpc kernel. Adding changes to clean buffers and dma handles |
| even when remote invocation to DSP returns failures. |
| |
| Fixes: c68cfb718c8f ("misc: fastrpc: Add support for context Invoke method") |
| Cc: stable <stable@kernel.org> |
| Signed-off-by: Ekansh Gupta <quic_ekangupt@quicinc.com> |
| Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> |
| Link: https://lore.kernel.org/r/20231013122007.174464-4-srinivas.kandagatla@linaro.org |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/misc/fastrpc.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/misc/fastrpc.c |
| +++ b/drivers/misc/fastrpc.c |
| @@ -993,11 +993,6 @@ static int fastrpc_internal_invoke(struc |
| if (err) |
| goto bail; |
| |
| - /* Check the response from remote dsp */ |
| - err = ctx->retval; |
| - if (err) |
| - goto bail; |
| - |
| if (ctx->nscalars) { |
| /* make sure that all memory writes by DSP are seen by CPU */ |
| dma_rmb(); |
| @@ -1007,6 +1002,11 @@ static int fastrpc_internal_invoke(struc |
| goto bail; |
| } |
| |
| + /* Check the response from remote dsp */ |
| + err = ctx->retval; |
| + if (err) |
| + goto bail; |
| + |
| bail: |
| if (err != -ERESTARTSYS && err != -ETIMEDOUT) { |
| /* We are done with this compute context */ |