On Mon, 21 Mar 2016 06:03:29 +0100, libin.yang@xxxxxxxxxxxxxxx wrote: > > From: Libin Yang <libin.yang@xxxxxxxxxxxxxxx> > > 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.yang@xxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx