On 10/12/2015 06:43 PM, Mauro Carvalho Chehab wrote:
Interface links connected to an entity should be removed before being able of removing the entity.
Change-Id: I18377e05409c7f1d594f02e35bffdd99620dd07d Signed-off-by: Mauro Carvalho Chehab mchehab@osg.samsung.com
Acked-by: Hans Verkuil hans.verkuil@cisco.com
drivers/media/media-device.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c index 96a476eeb16e..7c37aeab05bb 100644 --- a/drivers/media/media-device.c +++ b/drivers/media/media-device.c @@ -638,14 +638,30 @@ void media_device_unregister_entity(struct media_entity *entity) return;
spin_lock(&mdev->lock);
- /* Remove interface links with this entity on it */
- list_for_each_entry_safe(link, tmp, &mdev->links, graph_obj.list) {
if (media_type(link->gobj1) == MEDIA_GRAPH_ENTITY
&& link->entity == entity) {
media_gobj_remove(&link->graph_obj);
kfree(link);
}
- }
- /* Remove all data links that belong to this entity */ list_for_each_entry_safe(link, tmp, &entity->links, list) { media_gobj_remove(&link->graph_obj); list_del(&link->list); kfree(link); }
- /* Remove all pads that belong to this entity */ for (i = 0; i < entity->num_pads; i++) media_gobj_remove(&entity->pads[i].graph_obj);
- /* Remove the entity */ media_gobj_remove(&entity->graph_obj);
- spin_unlock(&mdev->lock); entity->graph_obj.mdev = NULL;
}