msm: adsprpc: Check fastrpc file pointer before accessing it
Fastrpc file pointer is assigned NULL value for remote heap region
allocated from CMA. Avoid accessing of this NULL pointer while freeing
the remote heap mapping.
Change-Id: Id4bdc1ff326e5b00937e21ac7eb76d518ecf7ee4
Signed-off-by: Jeya R <jeyr@codeaurora.org>
diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c
index 2d23442..03ccd6c 100644
--- a/drivers/char/adsprpc.c
+++ b/drivers/char/adsprpc.c
@@ -726,13 +726,16 @@ static void fastrpc_mmap_free(struct fastrpc_mmap *map, uint32_t flags)
if (!map)
return;
fl = map->fl;
- cid = fl->cid;
- VERIFY(err, cid >= ADSP_DOMAIN_ID && cid < NUM_CHANNELS);
- if (err) {
- err = -ECHRNG;
- pr_err("adsprpc: ERROR:%s, Invalid channel id: %d, err:%d",
- __func__, cid, err);
- return;
+ if (fl && !(map->flags == ADSP_MMAP_HEAP_ADDR ||
+ map->flags == ADSP_MMAP_REMOTE_HEAP_ADDR)) {
+ cid = fl->cid;
+ VERIFY(err, cid >= ADSP_DOMAIN_ID && cid < NUM_CHANNELS);
+ if (err) {
+ err = -ECHRNG;
+ pr_err("adsprpc: ERROR:%s, Invalid channel id: %d, err:%d",
+ __func__, cid, err);
+ return;
+ }
}
if (map->flags == ADSP_MMAP_HEAP_ADDR ||
map->flags == ADSP_MMAP_REMOTE_HEAP_ADDR) {