diff --git a/drivers/amlogic/media/video_processor/pic_dev/picdec.c b/drivers/amlogic/media/video_processor/pic_dev/picdec.c
index edeb424ffae2c63e9acb9181ea400765d4faacd9..0d282524809292ad9eaa7498251bef8401b0a9ef 100644
--- a/drivers/amlogic/media/video_processor/pic_dev/picdec.c
+++ b/drivers/amlogic/media/video_processor/pic_dev/picdec.c
@@ -199,6 +199,10 @@ static void picdec_vf_put(struct vframe_s *vf, void *op_arg)
 	if (!vf)
 		return;
 	INCPTR(putting_ptr);
+	if (putting_ptr == fill_ptr) {
+		aml_pr_info(1, "buffer%d is being in use, skip\n", fill_ptr);
+		return;
+	}
 	for (i = 0; i < VF_POOL_SIZE; i++) {
 		canvas_addr = index2canvas(i);
 		if (vf->canvas0Addr == canvas_addr) {