diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index 54cda530bb8c3411dcb81c8b2c34d46c4a2a93c1..27f75d73e3e8aa78f34a0957b18f237d9bc34382 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -698,11 +698,9 @@ int ff_decode_get_hw_frames_ctx(AVCodecContext *avctx,
     ret = avcodec_get_hw_frames_parameters(avctx,
                                            avctx->hw_device_ctx,
                                            avctx->hwaccel->pix_fmt,
-                                           avctx->hw_frames_ctx);
-    if (ret < 0) {
-        av_buffer_unref(&avctx->hw_frames_ctx);
+                                           &avctx->hw_frames_ctx);
+    if (ret < 0)
         return ret;
-    }
 
     frames_ctx = (AVHWFramesContext*)avctx->hw_frames_ctx->data;