diff options
Diffstat (limited to 'drivers/media/platform/exynos/mfc/mfc_core_isr.c')
-rw-r--r-- | drivers/media/platform/exynos/mfc/mfc_core_isr.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/platform/exynos/mfc/mfc_core_isr.c b/drivers/media/platform/exynos/mfc/mfc_core_isr.c index 16278f9a7..6be29e4ca 100644 --- a/drivers/media/platform/exynos/mfc/mfc_core_isr.c +++ b/drivers/media/platform/exynos/mfc/mfc_core_isr.c @@ -195,7 +195,8 @@ static void __mfc_handle_frame_unused_output(struct mfc_core *core, struct mfc_c UNUSED_TAG); dec->ref_buf[dec->refcnt].fd[0] = mfc_buf->vb.vb2_buf.planes[0].m.fd; - dec->refcnt++; + if (dec->refcnt < MFC_MAX_BUFFERS - 1) + dec->refcnt++; vb2_buffer_done(&mfc_buf->vb.vb2_buf, VB2_BUF_STATE_DONE); mfc_debug(2, "[DPB] dst index [%d][%d] fd: %d is buffer done (not used)\n", @@ -595,7 +596,8 @@ static void __mfc_handle_released_buf(struct mfc_core *core, struct mfc_ctx *ctx dec->dpb[i].ref = 0; if (dec->dpb[i].queued && (dec->dpb[i].new_fd != -1)) { dec->ref_buf[dec->refcnt].fd[0] = dec->dpb[i].fd[0]; - dec->refcnt++; + if (dec->refcnt < MFC_MAX_BUFFERS - 1) + dec->refcnt++; mfc_debug(3, "[REFINFO] Queued DPB[%d] released fd: %d\n", i, dec->dpb[i].fd[0]); dec->dpb[i].fd[0] = dec->dpb[i].new_fd; @@ -604,7 +606,8 @@ static void __mfc_handle_released_buf(struct mfc_core *core, struct mfc_ctx *ctx i, dec->dpb[i].fd[0]); } else if (!dec->dpb[i].queued) { dec->ref_buf[dec->refcnt].fd[0] = dec->dpb[i].fd[0]; - dec->refcnt++; + if (dec->refcnt < MFC_MAX_BUFFERS - 1) + dec->refcnt++; mfc_debug(3, "[REFINFO] Dqueued DPB[%d] released fd: %d\n", i, dec->dpb[i].fd[0]); /* @@ -630,7 +633,8 @@ static void __mfc_handle_released_buf(struct mfc_core *core, struct mfc_ctx *ctx if (!(dec->dynamic_used & (1UL << i)) && dec->dpb[i].mapcnt && !dec->dpb[i].queued) { dec->ref_buf[dec->refcnt].fd[0] = dec->dpb[i].fd[0]; - dec->refcnt++; + if (dec->refcnt < MFC_MAX_BUFFERS - 1) + dec->refcnt++; mfc_debug(3, "[REFINFO] display DPB[%d] released fd: %d\n", i, dec->dpb[i].fd[0]); dec->dpb_table_used &= ~(1UL << i); |