Skip to content

Commit 3e4f3e4

Browse files
jhovoldsmb49
authored andcommitted
misc: fastrpc: fix memory corruption on open
BugLink: https://bugs.launchpad.net/bugs/1992211 commit d245f43 upstream. The probe session-duplication overflow check incremented the session count also when there were no more available sessions so that memory beyond the fixed-size slab-allocated session array could be corrupted in fastrpc_session_alloc() on open(). Fixes: f6f9279 ("misc: fastrpc: Add Qualcomm fastrpc basic driver model") Cc: stable@vger.kernel.org # 5.1 Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Link: https://lore.kernel.org/r/20220829080531.29681-3-johan+linaro@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Kamal Mostafa <kamal@canonical.com> Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
1 parent 8b6e7cf commit 3e4f3e4

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

drivers/misc/fastrpc.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,7 +1362,7 @@ static int fastrpc_cb_probe(struct platform_device *pdev)
13621362
spin_unlock_irqrestore(&cctx->lock, flags);
13631363
return -ENOSPC;
13641364
}
1365-
sess = &cctx->session[cctx->sesscount];
1365+
sess = &cctx->session[cctx->sesscount++];
13661366
sess->used = false;
13671367
sess->valid = true;
13681368
sess->dev = dev;
@@ -1375,13 +1375,12 @@ static int fastrpc_cb_probe(struct platform_device *pdev)
13751375
struct fastrpc_session_ctx *dup_sess;
13761376

13771377
for (i = 1; i < sessions; i++) {
1378-
if (cctx->sesscount++ >= FASTRPC_MAX_SESSIONS)
1378+
if (cctx->sesscount >= FASTRPC_MAX_SESSIONS)
13791379
break;
1380-
dup_sess = &cctx->session[cctx->sesscount];
1380+
dup_sess = &cctx->session[cctx->sesscount++];
13811381
memcpy(dup_sess, sess, sizeof(*dup_sess));
13821382
}
13831383
}
1384-
cctx->sesscount++;
13851384
spin_unlock_irqrestore(&cctx->lock, flags);
13861385
rc = dma_set_mask(dev, DMA_BIT_MASK(32));
13871386
if (rc) {

0 commit comments

Comments
 (0)