|
@@ -1011,14 +1011,13 @@ static void fastrpc_mmap_free(struct fastrpc_mmap *map, uint32_t flags)
|
|
|
map->refs--;
|
|
|
if (!map->refs && !map->is_persistent && !map->ctx_refs)
|
|
|
hlist_del_init(&map->hn);
|
|
|
- spin_unlock_irqrestore(&me->hlock, irq_flags);
|
|
|
if (map->refs > 0) {
|
|
|
ADSPRPC_WARN(
|
|
|
"multiple references for remote heap size %zu va 0x%lx ref count is %d\n",
|
|
|
map->size, map->va, map->refs);
|
|
|
+ spin_unlock_irqrestore(&me->hlock, irq_flags);
|
|
|
return;
|
|
|
}
|
|
|
- spin_lock_irqsave(&me->hlock, irq_flags);
|
|
|
if (map->is_persistent && map->in_use)
|
|
|
map->in_use = false;
|
|
|
spin_unlock_irqrestore(&me->hlock, irq_flags);
|
|
@@ -2331,7 +2330,7 @@ static void fastrpc_notify_drivers(struct fastrpc_apps *me, int cid)
|
|
|
spin_lock_irqsave(&me->hlock, irq_flags);
|
|
|
hlist_for_each_entry_safe(fl, n, &me->drivers, hn) {
|
|
|
if (fl->cid == cid) {
|
|
|
- fastrpc_queue_pd_status(fl, cid, FASTRPC_DSP_SSR, 0);
|
|
|
+ fastrpc_queue_pd_status(fl, cid, FASTRPC_DSP_SSR, fl->sessionid);
|
|
|
fastrpc_notify_users(fl);
|
|
|
}
|
|
|
}
|