Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6753743e authored by Max Kellermann's avatar Max Kellermann Committed by Mauro Carvalho Chehab
Browse files

[media] media-entity: clear media_gobj.mdev in _destroy()



media_gobj_destroy() may be called twice on one instance - once by
media_device_unregister() and again by dvb_media_device_free().  The
function media_remove_intf_links() establishes and documents the
convention that mdev==NULL means that the object is not registered,
but nobody ever NULLs this variable.  So this patch really implements
this behavior, and adds another mdev==NULL check to
media_gobj_destroy() to protect against double removal.

Signed-off-by: default avatarMax Kellermann <max.kellermann@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 1f862a68
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -205,10 +205,16 @@ void media_gobj_destroy(struct media_gobj *gobj)
{
	dev_dbg_obj(__func__, gobj);

	/* Do nothing if the object is not linked. */
	if (gobj->mdev == NULL)
		return;

	gobj->mdev->topology_version++;

	/* Remove the object from mdev list */
	list_del(&gobj->list);

	gobj->mdev = NULL;
}

int media_entity_pads_init(struct media_entity *entity, u16 num_pads,