Skip to content

Commit 5091433

Browse files
quic-ekanguptgregkh
authored andcommitted
misc: fastrpc: Unmap only if buffer is unmapped from DSP
For unmapping any buffer from kernel, it should first be unmapped from DSP. In case unmap from DSP request fails, the map should not be removed from kernel as it might lead to SMMU faults and other memory issues. Fixes: 5c1b97c ("misc: fastrpc: add support for FASTRPC_IOCTL_MEM_MAP/UNMAP") 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-5-srinivas.kandagatla@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 1c80935 commit 5091433

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

drivers/misc/fastrpc.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1981,11 +1981,13 @@ static int fastrpc_req_mem_unmap_impl(struct fastrpc_user *fl, struct fastrpc_me
19811981
sc = FASTRPC_SCALARS(FASTRPC_RMID_INIT_MEM_UNMAP, 1, 0);
19821982
err = fastrpc_internal_invoke(fl, true, FASTRPC_INIT_HANDLE, sc,
19831983
&args[0]);
1984-
fastrpc_map_put(map);
1985-
if (err)
1984+
if (err) {
19861985
dev_err(dev, "unmmap\tpt fd = %d, 0x%09llx error\n", map->fd, map->raddr);
1986+
return err;
1987+
}
1988+
fastrpc_map_put(map);
19871989

1988-
return err;
1990+
return 0;
19891991
}
19901992

19911993
static int fastrpc_req_mem_unmap(struct fastrpc_user *fl, char __user *argp)

0 commit comments

Comments
 (0)