> > intel_crtc is being allocated as part of intel_modeset_init_nogem and > > not freed as part of driver remove. This will lead to memory leak. > > Hence free up the allocated crtc on driver remove as part of > > intel_modeset_driver_remove_nogem. > > No, there's no leak and this is not needed. > > See drm_mode_config_cleanup() calling crtc->funcs->destroy() on each crtc. Sorry, I didn't notice this function. intel_crtc_alloc() is called as part of probe->intel_modeset_init_nogem->intel_crtc_init on similar basis cleanup/free should be done in driver remove->intel_modeset_driver_remove_nogem->intel_crtc_free Does this look cleaner? Kfree(crtc) which is called in crtc->funcs->destroy is intended for cleanup and hence drm_crtc_cleanup() is being called from intel_crtc_destroy(). The comments added in drm_crtc_funcs say that cleanup resources on destroy. Again looking at the driver design, intel_crtc_alloc is not done as part of any drm_crtc_funcs, rather on probe->modeset_init_nogem, so calling intel_crtc_free from remove->modeset_driver_remove_nogem would make more sence. Also, looking into the func intel_modeset_init_nogem(), the func intel_modeset_driver_remove_nogem should be renamed as intel_modeset_deinit_nogem(). Thanks and Regards, Arun R Murthy --------------------