diff mbox series

dmaengine: ti: k3-psil: fix deadlock on error path

Message ID 20200408185501.30776-1-grygorii.strashko@ti.com (mailing list archive)
State Mainlined
Commit 172d59ecd61b89f535ad99a7e531c0f111453b9a
Headers show
Series dmaengine: ti: k3-psil: fix deadlock on error path | expand

Commit Message

Grygorii Strashko April 8, 2020, 6:55 p.m. UTC
The mutex_unlock() is missed on error path of psil_get_ep_config()
which causes deadlock, so add missed mutex_unlock().

Fixes: 8c6bb62f6b4a ("dmaengine: ti: k3 PSI-L remote endpoint configuration")
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 drivers/dma/ti/k3-psil.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Peter Ujfalusi April 9, 2020, 6:45 a.m. UTC | #1
On 08/04/2020 21.55, Grygorii Strashko wrote:
> The mutex_unlock() is missed on error path of psil_get_ep_config()
> which causes deadlock, so add missed mutex_unlock().

Ah, you are right, thanks for catching it!

Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> Fixes: 8c6bb62f6b4a ("dmaengine: ti: k3 PSI-L remote endpoint configuration")
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> ---
>  drivers/dma/ti/k3-psil.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/dma/ti/k3-psil.c b/drivers/dma/ti/k3-psil.c
> index d7b965049ccb..fb7c8150b0d1 100644
> --- a/drivers/dma/ti/k3-psil.c
> +++ b/drivers/dma/ti/k3-psil.c
> @@ -27,6 +27,7 @@ struct psil_endpoint_config *psil_get_ep_config(u32 thread_id)
>  			soc_ep_map = &j721e_ep_map;
>  		} else {
>  			pr_err("PSIL: No compatible machine found for map\n");
> +			mutex_unlock(&ep_map_mutex);
>  			return ERR_PTR(-ENOTSUPP);
>  		}
>  		pr_debug("%s: Using map for %s\n", __func__, soc_ep_map->name);
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Vinod Koul April 15, 2020, 4:05 p.m. UTC | #2
On 08-04-20, 21:55, Grygorii Strashko wrote:
> The mutex_unlock() is missed on error path of psil_get_ep_config()
> which causes deadlock, so add missed mutex_unlock().

Applied, thanks
diff mbox series

Patch

diff --git a/drivers/dma/ti/k3-psil.c b/drivers/dma/ti/k3-psil.c
index d7b965049ccb..fb7c8150b0d1 100644
--- a/drivers/dma/ti/k3-psil.c
+++ b/drivers/dma/ti/k3-psil.c
@@ -27,6 +27,7 @@  struct psil_endpoint_config *psil_get_ep_config(u32 thread_id)
 			soc_ep_map = &j721e_ep_map;
 		} else {
 			pr_err("PSIL: No compatible machine found for map\n");
+			mutex_unlock(&ep_map_mutex);
 			return ERR_PTR(-ENOTSUPP);
 		}
 		pr_debug("%s: Using map for %s\n", __func__, soc_ep_map->name);