2014-11-21 Inki Dae <inki.dae at samsung.com>: > On 2014ë 11ì 21ì¼ 08:54, Gustavo Padovan wrote: > > From: Gustavo Padovan <gustavo.padovan at collabora.co.uk> > > > > exynos_drm_component_add() correctly checks if a component is present on > > drm_component_list however it release the lock right after the check > > and before we add the new component to the list. That just creates room > > to add the same component more than once to the list. > > A little bit strange. drm_component_list is protected from race > condition with mutex_lock. How the same component can be added to the > drm_component_list again? And a new cdev object cannot be same cdev > object already added to the drm_component_list because the new cdev > object is allocated by kzalloc(). And the only case the same kms driver > can request to add a new cdev to drm_component_list again is when the > probe of the driver failed. However, in this case, the driver will call > exynos_drm_component_del function to remove previous cdev. So the same > cdev cannot be added to the drm_component_list even in such case.
Hmm, right. I haven't payed attention that each one of them is called just once. I did this patch in my first days working with this code so I ignored what exynos_drm_component_add() was really doing. Gustavo