[v1] misc: fastrpc: Fix incorrect DMA mapping unmap request

Message ID 1690180827-20810-1-git-send-email-quic_ekangupt@quicinc.com
State New
Headers
Series [v1] misc: fastrpc: Fix incorrect DMA mapping unmap request |

Commit Message

Ekansh Gupta July 24, 2023, 6:40 a.m. UTC
  Scatterlist table is obtained during map create request and the same
table is used for DMA mapping unmap. In case there is any failure
while getting the sg_table, ERR_PTR is returned instead of sg_table.

When the map is getting freed, there is only a non-NULL check of
sg_table which will also be true in case failure was returned instead
of sg_table. This would result in improper unmap request. Add proper
check to avoid bad unmap request.

Signed-off-by: Ekansh Gupta <quic_ekangupt@quicinc.com>
---
 drivers/misc/fastrpc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index 9666d28..75da69a 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -313,7 +313,7 @@  static void fastrpc_free_map(struct kref *ref)
 
 	map = container_of(ref, struct fastrpc_map, refcount);
 
-	if (map->table) {
+	if (map->table && !IS_ERR(map->table)) {
 		if (map->attr & FASTRPC_ATTR_SECUREMAP) {
 			struct qcom_scm_vmperm perm;
 			int vmid = map->fl->cctx->vmperms[0].vmid;