misc: fastrpc: fix memory corruption on open
[platform/kernel/linux-rpi.git] / drivers / misc / fastrpc.c
index cbb90e0..cf57057 100644 (file)
@@ -1555,7 +1555,7 @@ static int fastrpc_cb_probe(struct platform_device *pdev)
                spin_unlock_irqrestore(&cctx->lock, flags);
                return -ENOSPC;
        }
-       sess = &cctx->session[cctx->sesscount];
+       sess = &cctx->session[cctx->sesscount++];
        sess->used = false;
        sess->valid = true;
        sess->dev = dev;
@@ -1568,13 +1568,12 @@ static int fastrpc_cb_probe(struct platform_device *pdev)
                struct fastrpc_session_ctx *dup_sess;
 
                for (i = 1; i < sessions; i++) {
-                       if (cctx->sesscount++ >= FASTRPC_MAX_SESSIONS)
+                       if (cctx->sesscount >= FASTRPC_MAX_SESSIONS)
                                break;
-                       dup_sess = &cctx->session[cctx->sesscount];
+                       dup_sess = &cctx->session[cctx->sesscount++];
                        memcpy(dup_sess, sess, sizeof(*dup_sess));
                }
        }
-       cctx->sesscount++;
        spin_unlock_irqrestore(&cctx->lock, flags);
        rc = dma_set_mask(dev, DMA_BIT_MASK(32));
        if (rc) {