FAILED: patch "[PATCH] mei: allow map and unmap of client dma buffer only for" failed to apply to 5.11-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.11-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From ce068bc7da473e39b64d130101e178406023df0c Mon Sep 17 00:00:00 2001
From: Tomas Winkler <[email protected]>
Date: Thu, 18 Mar 2021 07:59:59 +0200
Subject: [PATCH] mei: allow map and unmap of client dma buffer only for
disconnected client
Allow map and unmap of the client dma buffer only when the client is not connected. The functions return -EPROTO if the client is already connected. This is to fix the race when traffic may start or stop when buffer is not available.
drivers/misc/mei/client.c +7 -10
@@ -2286,8 +2286,8 @@ int mei_cl_dma_alloc_and_map(struct mei_cl *cl, const struct file *fp,if (buffer_id ==0 )return -EINVAL ; -if (!mei_cl_is_connected (cl)) -return -ENODEV ; +if (mei_cl_is_connected (cl)) +return -EPROTO ;if (cl->dma_mapped)return -EPROTO ;
@@ -2327,9 +2327,7 @@ int mei_cl_dma_alloc_and_map(struct mei_cl *cl, const struct file *fp,mutex_unlock (&dev->device_lock);wait_event_timeout (cl->wait, - cl->dma_mapped || - cl->status || - !mei_cl_is_connected (cl), + cl->dma_mapped || cl->status,mei_secs_to_jiffies (MEI_CL_CONNECT_TIMEOUT ));mutex_lock (&dev->device_lock);
@@ -2376,8 +2374,9 @@ int mei_cl_dma_unmap(struct mei_cl *cl, const struct file *fp)return -EOPNOTSUPP ; } -if (!mei_cl_is_connected (cl)) -return -ENODEV ; +/* do not allow unmap for connected client */ +if (mei_cl_is_connected (cl)) +return -EPROTO ;if (!cl->dma_mapped)return -EPROTO ;
@@ -2405,9 +2404,7 @@ int mei_cl_dma_unmap(struct mei_cl *cl, const struct file *fp)mutex_unlock (&dev->device_lock);wait_event_timeout (cl->wait, - !cl->dma_mapped || - cl->status || - !mei_cl_is_connected (cl), + !cl->dma_mapped || cl->status,mei_secs_to_jiffies (MEI_CL_CONNECT_TIMEOUT ));mutex_lock (&dev->device_lock);