[FFmpeg-devel] [PATCH, v2] lavc/qsvenc: Fix the memory leak for enc_ctrl.Payload

Li, Zhong zhong.li at intel.com
Mon Apr 29 12:00:00 EEST 2019


> From: ffmpeg-devel [mailto:ffmpeg-devel-bounces at ffmpeg.org] On Behalf
> Of Linjie Fu
> Sent: Monday, April 15, 2019 9:23 PM
> To: ffmpeg-devel at ffmpeg.org
> Cc: Fu, Linjie <linjie.fu at intel.com>
> Subject: [FFmpeg-devel] [PATCH, v2] lavc/qsvenc: Fix the memory leak for
> enc_ctrl.Payload
> 
> frame->enc_ctrl.Payload is malloced in get_free_frame, directly memset
> the whole structure of enc_ctrl to zero will cause the memory leak for
> enc_ctrl.Payload.
> 
> frame->enc_ctrl as a structure will be malloc and init to zero by
> frame->calling
> frame = av_mallocz(sizeof(*frame)), so the memset is redundant and can be
> removed.
> 
> Can be reproduced by #7830.

Patch LGTM now, but I can't see strong relationship between this patch and tikect #7830.
IMHO this is a quite common issue even if you use qsv transcoding pipeline? 

> Signed-off-by: Linjie Fu <linjie.fu at intel.com>
> ---
>  libavcodec/qsvenc.c | 1 -
>  1 file changed, 1 deletion(-)
> 
> diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index
> 5aa020d47b..19953bd4ea 100644
> --- a/libavcodec/qsvenc.c
> +++ b/libavcodec/qsvenc.c
> @@ -1254,7 +1254,6 @@ static int encode_frame(AVCodecContext *avctx,
> QSVEncContext *q,
>      if (qsv_frame) {
>          surf = &qsv_frame->surface;
>          enc_ctrl = &qsv_frame->enc_ctrl;
> -        memset(enc_ctrl, 0, sizeof(mfxEncodeCtrl));
> 
>          if (frame->pict_type == AV_PICTURE_TYPE_I) {
>              enc_ctrl->FrameType = MFX_FRAMETYPE_I |
> MFX_FRAMETYPE_REF;
> --
> 2.17.1



More information about the ffmpeg-devel mailing list