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

Commit fa5034c6 authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Mauro Carvalho Chehab
Browse files

[media] media: fix truncated entity specification



When enumerating an entity, assign the entire entity specification
instead of only the first two words. (This requires giving the
specification union a name.)

So far, no driver actually uses more than two words, but this will
be needed for ALSA entities.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
[laurent.pinchart@ideasonboard.com: Rename specification to info]
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent c1026c58
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -108,8 +108,7 @@ static long media_device_enum_entities(struct media_device *mdev,
	u_ent.group_id = ent->group_id;
	u_ent.group_id = ent->group_id;
	u_ent.pads = ent->num_pads;
	u_ent.pads = ent->num_pads;
	u_ent.links = ent->num_links - ent->num_backlinks;
	u_ent.links = ent->num_links - ent->num_backlinks;
	u_ent.v4l.major = ent->v4l.major;
	memcpy(&u_ent.raw, &ent->info, sizeof(ent->info));
	u_ent.v4l.minor = ent->v4l.minor;
	if (copy_to_user(uent, &u_ent, sizeof(u_ent)))
	if (copy_to_user(uent, &u_ent, sizeof(u_ent)))
		return -EFAULT;
		return -EFAULT;
	return 0;
	return 0;
+2 −2
Original line number Original line Diff line number Diff line
@@ -701,8 +701,8 @@ int __video_register_device(struct video_device *vdev, int type, int nr,
	    vdev->vfl_type != VFL_TYPE_SUBDEV) {
	    vdev->vfl_type != VFL_TYPE_SUBDEV) {
		vdev->entity.type = MEDIA_ENT_T_DEVNODE_V4L;
		vdev->entity.type = MEDIA_ENT_T_DEVNODE_V4L;
		vdev->entity.name = vdev->name;
		vdev->entity.name = vdev->name;
		vdev->entity.v4l.major = VIDEO_MAJOR;
		vdev->entity.info.v4l.major = VIDEO_MAJOR;
		vdev->entity.v4l.minor = vdev->minor;
		vdev->entity.info.v4l.minor = vdev->minor;
		ret = media_device_register_entity(vdev->v4l2_dev->mdev,
		ret = media_device_register_entity(vdev->v4l2_dev->mdev,
			&vdev->entity);
			&vdev->entity);
		if (ret < 0)
		if (ret < 0)
+2 −2
Original line number Original line Diff line number Diff line
@@ -234,8 +234,8 @@ int v4l2_device_register_subdev_nodes(struct v4l2_device *v4l2_dev)
			goto clean_up;
			goto clean_up;
		}
		}
#if defined(CONFIG_MEDIA_CONTROLLER)
#if defined(CONFIG_MEDIA_CONTROLLER)
		sd->entity.v4l.major = VIDEO_MAJOR;
		sd->entity.info.v4l.major = VIDEO_MAJOR;
		sd->entity.v4l.minor = vdev->minor;
		sd->entity.info.v4l.minor = vdev->minor;
#endif
#endif
		sd->devnode = vdev;
		sd->devnode = vdev;
	}
	}
+1 −1
Original line number Original line Diff line number Diff line
@@ -98,7 +98,7 @@ struct media_entity {


		/* Sub-device specifications */
		/* Sub-device specifications */
		/* Nothing needed yet */
		/* Nothing needed yet */
	};
	} info;
};
};


static inline u32 media_entity_type(struct media_entity *entity)
static inline u32 media_entity_type(struct media_entity *entity)