diff --git a/drivers/char/adsprpc.c b/drivers/char/adsprpc.c index 58ed7c212e6b..4385e26475d2 100644 --- a/drivers/char/adsprpc.c +++ b/drivers/char/adsprpc.c @@ -1659,10 +1659,12 @@ static int get_args(uint32_t kernel, struct smq_invoke_ctx *ctx) mutex_lock(&ctx->fl->map_mutex); if (ctx->fds && (ctx->fds[i] != -1)) - fastrpc_mmap_create(ctx->fl, ctx->fds[i], + err = fastrpc_mmap_create(ctx->fl, ctx->fds[i], ctx->attrs[i], buf, len, mflags, &ctx->maps[i]); mutex_unlock(&ctx->fl->map_mutex); + if (err) + goto bail; ipage += 1; } PERF_END); @@ -1673,9 +1675,10 @@ static int get_args(uint32_t kernel, struct smq_invoke_ctx *ctx) if (ctx->attrs && (ctx->attrs[i] & FASTRPC_ATTR_NOMAP)) dmaflags = FASTRPC_DMAHANDLE_NOMAP; - VERIFY(err, !fastrpc_mmap_create(ctx->fl, ctx->fds[i], - FASTRPC_ATTR_NOVA, 0, 0, dmaflags, - &ctx->maps[i])); + if (ctx->fds && (ctx->fds[i] != -1)) + err = fastrpc_mmap_create(ctx->fl, ctx->fds[i], + FASTRPC_ATTR_NOVA, 0, 0, dmaflags, + &ctx->maps[i]); if (err) { mutex_unlock(&ctx->fl->map_mutex); goto bail;