Re: [PATCH v8 49/55] [media] media-device: add support for MEDIA_IOC_G_TOPOLOGY ioctl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/31/2015 03:40 PM, Mauro Carvalho Chehab wrote:
> Em Mon, 31 Aug 2015 14:47:03 +0200
> Hans Verkuil <hverkuil@xxxxxxxxx> escreveu:
> 
>> On 08/30/2015 05:07 AM, Mauro Carvalho Chehab wrote:
>>> Add support for the new MEDIA_IOC_G_TOPOLOGY ioctl, according
>>> with the RFC for the MC next generation.
>>>
>>> Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxx>
>>>
>>> diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
>>> index 5b2c9f7fcd45..a91e1ec076a6 100644
>>> --- a/drivers/media/media-device.c
>>> +++ b/drivers/media/media-device.c
>>> @@ -232,6 +232,136 @@ static long media_device_setup_link(struct media_device *mdev,
>>>  	return ret;
>>>  }
>>>  
>>> +static long __media_device_get_topology(struct media_device *mdev,
>>> +				      struct media_v2_topology *topo)
>>> +{
>>> +	struct media_entity *entity;
>>> +	struct media_interface *intf;
>>> +	struct media_pad *pad;
>>> +	struct media_link *link;
>>> +	struct media_v2_entity uentity;
>>> +	struct media_v2_interface uintf;
>>> +	struct media_v2_pad upad;
>>> +	struct media_v2_link ulink;
>>> +	int ret = 0, i;
>>> +
>>> +	topo->topology_version = mdev->topology_version;
>>> +
>>> +	/* Get entities and number of entities */
>>> +	i = 0;
>>> +	media_device_for_each_entity(entity, mdev) {
>>> +		i++;
>>> +
>>> +		if (ret || !topo->entities)
>>> +			continue;
>>
>> I would add:
>>
>> 		if (i > topo->num_entities)
>> 			continue;
>>
>> The copy_to_user can succeed, even if i > num_entities depending on how the
>> memory was allocated. So I would always check num_entities and refuse to go
>> beyond it.
> 
> I think that the best is:
> 
> 	if (i > topo->num_entities) {
> 		ret = -ENOSPC;
> 		continue;
> 	}

Agreed.

Regards,

	Hans

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux