diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c index 638f2784ef12..89ea4be641b8 100644 --- a/drivers/char/adsprpc.c +++ b/drivers/char/adsprpc.c @@ -3132,6 +3132,11 @@ static int fastrpc_mmap_remove_pdr(struct fastrpc_file *fl) VERIFY(err, cid == fl->cid); if (err) goto bail; + if (!me->channel[fl->cid].spd[session].ispdup && + me->channel[fl->cid].spd[session].pdrhandle) { + err = -ENOTCONN; + goto bail; + } if (me->channel[fl->cid].spd[session].pdrcount != me->channel[fl->cid].spd[session].prevpdrcount) { err = fastrpc_mmap_remove_ssr(fl); @@ -3141,11 +3146,6 @@ static int fastrpc_mmap_remove_pdr(struct fastrpc_file *fl) me->channel[fl->cid].spd[session].prevpdrcount = me->channel[fl->cid].spd[session].pdrcount; } - if (!me->channel[fl->cid].spd[session].ispdup && - me->channel[fl->cid].spd[session].pdrhandle) { - err = -ENOTCONN; - goto bail; - } bail: return err; }