diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c index 3de040f97c27..36d218ff2b21 100644 --- a/drivers/char/adsprpc.c +++ b/drivers/char/adsprpc.c @@ -1466,8 +1466,11 @@ static int context_alloc(struct fastrpc_file *fl, uint32_t kernel, spin_lock(&fl->hlock); hlist_add_head(&ctx->hn, &clst->pending); - cid = (fl->cid >= ADSP_DOMAIN_ID && fl->cid < NUM_CHANNELS) - ? fl->cid : 0; + if (!(fl->cid >= ADSP_DOMAIN_ID && fl->cid < NUM_CHANNELS)) { + err = -ECHRNG; + goto bail; + } + cid = fl->cid; chan = &me->channel[cid]; spin_unlock(&fl->hlock);