On Mon, 21 Mar 2016 06:03:29 +0100,
libin.y...@linux.intel.com wrote:
> 
> From: Libin Yang <libin.y...@linux.intel.com>
> 
> When disconnecting monitor, dev_priv->dig_port_map[port]
> will be set NULL, which causes eld will not be updated in
> i915_audio_component_get_eld().
> 
> This patch clears the eld buf when dev_priv->dig_port_map[port]
> is NULL.
> 
> Signed-off-by: Libin Yang <libin.y...@linux.intel.com>

While this isn't certainly bad, I don't think it's mandatory.  The
function returns zero, i.e. no data is copied.  So the caller
shouldn't expect that the buffer is cleared in this case.

Actually, if we do zero-clear, a safer fix would be to do it at the
beginning.  The similar "leak" can be seen, as we do memcpy() only for
drm_eld_size() bytes at max.


thanks,

Takashi

> ---
>  drivers/gpu/drm/i915/intel_audio.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_audio.c 
> b/drivers/gpu/drm/i915/intel_audio.c
> index fdc8b2a..9d3879e 100644
> --- a/drivers/gpu/drm/i915/intel_audio.c
> +++ b/drivers/gpu/drm/i915/intel_audio.c
> @@ -732,6 +732,13 @@ static int i915_audio_component_get_eld(struct device 
> *dev, int port,
>                       ret = drm_eld_size(eld);
>                       memcpy(buf, eld, min(max_bytes, ret));
>               }
> +     } else {
> +             /* dev_priv->dig_port_map[port] will be set NULL in
> +              * intel_audio_codec_disable when disconnecting monitor.
> +              * We need clear the eld buf.
> +              */
> +             memset(buf, 0, max_bytes);
> +             ret = 0;
>       }
>  
>       mutex_unlock(&dev_priv->av_mutex);
> -- 
> 1.9.1
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to