clean_free_buffer(ctx);
 }
 
-static void mtk_vdec_pic_info_update(struct mtk_vcodec_ctx *ctx)
+static int mtk_vdec_pic_info_update(struct mtk_vcodec_ctx *ctx)
 {
        unsigned int dpbsize = 0;
        int ret;
                                &ctx->last_decoded_picinfo)) {
                mtk_v4l2_err("[%d]Error!! Cannot get param : GET_PARAM_PICTURE_INFO ERR",
                                ctx->id);
-               return;
+               return -EINVAL;
        }
 
        if (ctx->last_decoded_picinfo.pic_w == 0 ||
                ctx->last_decoded_picinfo.buf_w == 0 ||
                ctx->last_decoded_picinfo.buf_h == 0) {
                mtk_v4l2_err("Cannot get correct pic info");
-               return;
+               return -EINVAL;
        }
 
        if ((ctx->last_decoded_picinfo.pic_w == ctx->picinfo.pic_w) ||
            (ctx->last_decoded_picinfo.pic_h == ctx->picinfo.pic_h))
-               return;
+               return 0;
 
        mtk_v4l2_debug(1,
                        "[%d]-> new(%d,%d), old(%d,%d), real(%d,%d)",
                mtk_v4l2_err("Incorrect dpb size, ret=%d", ret);
 
        ctx->dpb_size = dpbsize;
+
+       return ret;
 }
 
 static void mtk_vdec_worker(struct work_struct *work)