int domain_id;
        int sesscount;
        int vmcount;
-       u64 perms;
        struct qcom_scm_vmperm vmperms[FASTRPC_MAX_VMIDS];
        struct rpmsg_device *rpdev;
        struct fastrpc_session_ctx session[FASTRPC_MAX_SESSIONS];
 
                /* Map if we have any heap VMIDs associated with this ADSP Static Process. */
                if (fl->cctx->vmcount) {
+                       u64 src_perms = BIT(QCOM_SCM_VMID_HLOS);
+
                        err = qcom_scm_assign_mem(fl->cctx->remote_heap->phys,
                                                        (u64)fl->cctx->remote_heap->size,
-                                                       &fl->cctx->perms,
+                                                       &src_perms,
                                                        fl->cctx->vmperms, fl->cctx->vmcount);
                        if (err) {
                                dev_err(fl->sctx->dev, "Failed to assign memory with phys 0x%llx size 0x%llx err %d",
 
        /* Add memory to static PD pool, protection thru hypervisor */
        if (req.flags == ADSP_MMAP_REMOTE_HEAP_ADDR && fl->cctx->vmcount) {
+               u64 src_perms = BIT(QCOM_SCM_VMID_HLOS);
+
                err = qcom_scm_assign_mem(buf->phys, (u64)buf->size,
-                       &fl->cctx->perms, fl->cctx->vmperms, fl->cctx->vmcount);
+                       &src_perms, fl->cctx->vmperms, fl->cctx->vmcount);
                if (err) {
                        dev_err(fl->sctx->dev, "Failed to assign memory phys 0x%llx size 0x%llx err %d",
                                        buf->phys, buf->size, err);
 
        if (vmcount) {
                data->vmcount = vmcount;
-               data->perms = BIT(QCOM_SCM_VMID_HLOS);
                for (i = 0; i < data->vmcount; i++) {
                        data->vmperms[i].vmid = vmids[i];
                        data->vmperms[i].perm = QCOM_SCM_PERM_RWX;