On Tue, May 17, 2016 at 7:29 PM, Jon Hunter <jonathanh@xxxxxxxxxx> wrote: >>> @@ -764,6 +769,9 @@ tegra_dsi_connector_duplicate_state(struct drm_connector *connector) >>> if (!copy) >>> return NULL; >>> >>> + if (copy->base.crtc) >>> + drm_connector_reference(connector); >>> + >> >> Please use __drm_atomic_helper_connector_duplicate_state instead of >> open-coding it. > > Unfortunately, tegra is allocating and duplicating memory for the entire > tegra_dsi_state structure (of which drm_connector_state is a member) in > this function and so I was not able to do that. However, may be Thierry > can comment on whether that is completely necessary and if we can move > to using __drm_atomic_helper_connector_duplicate_state() instead. Check out how other drivers are using this helper - it is explicitly for the case where you duplicate the entire struct, and it just initializes the core part from drm. You can then add your own fixup code afterwards. It also doesn't matter whether you do kmalloc or kcalloc or kmemdup - it does a memcpy of its own to make sure state gets copied. -Daniel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html