<div dir="ltr">I have test this patch on my side, plane properties are no more duplicated<div>so you can add my ack.</div><div><br></div><div>Thanks</div><div>Benjamin </div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-12-10 12:06 GMT+01:00 Daniel Vetter <span dir="ltr"><<a href="mailto:daniel@ffwll.ch" target="_blank">daniel@ffwll.ch</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Dec 10, 2014 at 11:38:49AM +0100, Thierry Reding wrote:<br>
> From: Thierry Reding <<a href="mailto:treding@nvidia.com">treding@nvidia.com</a>><br>
><br>
> Drivers where the DRM objects have a lifetime that extends beyond that<br>
> of the DRM device need to zero out the DRM object memory to void stale<br>
> data such as properties. The DRM core code expects to operate on newly<br>
> allocated and zeroed out objects and will behave unexpectedly, such as<br>
> add duplicate properties, otherwise.<br>
><br>
> Signed-off-by: Thierry Reding <<a href="mailto:treding@nvidia.com">treding@nvidia.com</a>><br>
<br>
</span>Yeah, makes sense imo to do in the core. Reviewed-by: Daniel Vetter <<a href="mailto:daniel.vetter@ffwll.ch">daniel.vetter@ffwll.ch</a>><br>
<br>
Also stuffed into drm-misc and I think I'll throw that at Dave today or<br>
tomorrow.<br>
-Daniel<br>
<div class="HOEnZb"><div class="h5"><br>
> ---<br>
>  drivers/gpu/drm/drm_crtc.c | 11 ++++++++++-<br>
>  1 file changed, 10 insertions(+), 1 deletion(-)<br>
><br>
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c<br>
> index 4c9aaf8e6176..4e35d2f74e0f 100644<br>
> --- a/drivers/gpu/drm/drm_crtc.c<br>
> +++ b/drivers/gpu/drm/drm_crtc.c<br>
> @@ -725,6 +725,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)<br>
>       WARN_ON(crtc->state && !crtc->funcs->atomic_destroy_state);<br>
>       if (crtc->state && crtc->funcs->atomic_destroy_state)<br>
>               crtc->funcs->atomic_destroy_state(crtc, crtc->state);<br>
> +<br>
> +     memset(crtc, 0, sizeof(*crtc));<br>
>  }<br>
>  EXPORT_SYMBOL(drm_crtc_cleanup);<br>
><br>
> @@ -927,6 +929,8 @@ void drm_connector_cleanup(struct drm_connector *connector)<br>
>       if (connector->state && connector->funcs->atomic_destroy_state)<br>
>               connector->funcs->atomic_destroy_state(connector,<br>
>                                                      connector->state);<br>
> +<br>
> +     memset(connector, 0, sizeof(*connector));<br>
>  }<br>
>  EXPORT_SYMBOL(drm_connector_cleanup);<br>
><br>
> @@ -1068,6 +1072,8 @@ void drm_bridge_cleanup(struct drm_bridge *bridge)<br>
>       list_del(&bridge->head);<br>
>       dev->mode_config.num_bridge--;<br>
>       drm_modeset_unlock_all(dev);<br>
> +<br>
> +     memset(bridge, 0, sizeof(*bridge));<br>
>  }<br>
>  EXPORT_SYMBOL(drm_bridge_cleanup);<br>
><br>
> @@ -1134,10 +1140,11 @@ void drm_encoder_cleanup(struct drm_encoder *encoder)<br>
>       drm_modeset_lock_all(dev);<br>
>       drm_mode_object_put(dev, &encoder->base);<br>
>       kfree(encoder->name);<br>
> -     encoder->name = NULL;<br>
>       list_del(&encoder->head);<br>
>       dev->mode_config.num_encoder--;<br>
>       drm_modeset_unlock_all(dev);<br>
> +<br>
> +     memset(encoder, 0, sizeof(*encoder));<br>
>  }<br>
>  EXPORT_SYMBOL(drm_encoder_cleanup);<br>
><br>
> @@ -1257,6 +1264,8 @@ void drm_plane_cleanup(struct drm_plane *plane)<br>
>       WARN_ON(plane->state && !plane->funcs->atomic_destroy_state);<br>
>       if (plane->state && plane->funcs->atomic_destroy_state)<br>
>               plane->funcs->atomic_destroy_state(plane, plane->state);<br>
> +<br>
> +     memset(plane, 0, sizeof(*plane));<br>
>  }<br>
>  EXPORT_SYMBOL(drm_plane_cleanup);<br>
><br>
> --<br>
> 2.1.3<br>
><br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
Daniel Vetter<br>
Software Engineer, Intel Corporation<br>
<a href="tel:%2B41%20%280%29%2079%20365%2057%2048" value="+41793655748">+41 (0) 79 365 57 48</a> - <a href="http://blog.ffwll.ch" target="_blank">http://blog.ffwll.ch</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">Benjamin Gaignard </p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px">Graphic Working Group</p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><span lang="EN-US" style="font-size:10pt;color:rgb(0,176,80)"><span style="color:rgb(0,68,252)"><a href="http://www.linaro.org/" style="color:rgb(0,0,204)" target="_blank">Linaro.org</a></span><b> </b></span><b><span lang="EN-US" style="font-size:10pt">│ </span></b><span lang="EN-US" style="font-size:10pt">Open source software for ARM SoCs</span></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><u></u></p><p style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px"><span lang="EN-US" style="font-size:10pt">Follow <b>Linaro: </b></span><span style="font-size:10pt;color:rgb(0,68,252)"><a href="http://www.facebook.com/pages/Linaro" style="color:rgb(0,0,204)" target="_blank"><span style="color:blue">Facebook</span></a></span><span style="font-size:10pt"> | <span style="color:rgb(0,68,252)"><a href="http://twitter.com/#!/linaroorg" style="color:rgb(0,0,204)" target="_blank"><span style="color:blue">Twitter</span></a></span> | <span style="color:rgb(0,68,252)"><a href="http://www.linaro.org/linaro-blog/" style="color:rgb(0,0,204)" target="_blank"><span style="color:blue">Blog</span></a></span></span></p></span></div>
</div>