media: mc: Check pad flag validity
Check the validity of pad flags on entity init. Exactly one of the flags must be set. Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
4c812e33b0
commit
deb866f9e3
@ -197,6 +197,7 @@ int media_entity_pads_init(struct media_entity *entity, u16 num_pads,
|
||||
struct media_device *mdev = entity->graph_obj.mdev;
|
||||
struct media_pad *iter;
|
||||
unsigned int i = 0;
|
||||
int ret = 0;
|
||||
|
||||
if (num_pads >= MEDIA_ENTITY_MAX_PADS)
|
||||
return -E2BIG;
|
||||
@ -210,15 +211,27 @@ int media_entity_pads_init(struct media_entity *entity, u16 num_pads,
|
||||
media_entity_for_each_pad(entity, iter) {
|
||||
iter->entity = entity;
|
||||
iter->index = i++;
|
||||
|
||||
if (hweight32(iter->flags & (MEDIA_PAD_FL_SINK |
|
||||
MEDIA_PAD_FL_SOURCE)) != 1) {
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (mdev)
|
||||
media_gobj_create(mdev, MEDIA_GRAPH_PAD,
|
||||
&iter->graph_obj);
|
||||
}
|
||||
|
||||
if (ret && mdev) {
|
||||
media_entity_for_each_pad(entity, iter)
|
||||
media_gobj_destroy(&iter->graph_obj);
|
||||
}
|
||||
|
||||
if (mdev)
|
||||
mutex_unlock(&mdev->graph_mutex);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(media_entity_pads_init);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user