[dpdk-dev] [PATCH] ethdev: report error on name truncation

Andrew Rybchenko arybchenko at solarflare.com
Mon Jan 7 17:17:47 CET 2019


On 1/7/19 6:53 PM, Stephen Hemminger wrote:
> On Mon, 7 Jan 2019 17:47:08 +0300
> Andrew Rybchenko <arybchenko at solarflare.com> wrote:
>
>> On 1/7/19 5:40 PM, Nithin Kumar Dabilpuram wrote:
>>> Signed-off-by: Nithin Dabilpuram <ndabilpuram at marvell.com>
>>> ---
>>>    lib/librte_ethdev/rte_ethdev.c | 12 ++++++++++--
>>>    1 file changed, 10 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c
>>> index 9d5107d..bd45445 100644
>>> --- a/lib/librte_ethdev/rte_ethdev.c
>>> +++ b/lib/librte_ethdev/rte_ethdev.c
>>> @@ -3588,9 +3588,17 @@ rte_eth_dma_zone_reserve(const struct rte_eth_dev *dev, const char *ring_name,
>>>    {
>>>    	char z_name[RTE_MEMZONE_NAMESIZE];
>>>    	const struct rte_memzone *mz;
>>> +	int rc;
>>>    
>>> -	snprintf(z_name, sizeof(z_name), "eth_p%d_q%d_%s",
>>> -		 dev->data->port_id, queue_id, ring_name);
>>> +	rc = snprintf(z_name, sizeof(z_name), "%s_%s_%d_%d",
>>> +		      dev->device->driver->name, ring_name,
>>> +		      dev->data->port_id, queue_id);
>>> +
>>> +	if (rc >= RTE_MEMZONE_NAMESIZE) {
>>> +		RTE_LOG(ERR, EAL, "%s(): truncated name\n", __func__);
>>> +		rte_errno = ENAMETOOLONG;
>>> +		return NULL;
>>> +	}
>>>    
>>>    	mz = rte_memzone_lookup(z_name);
>>>    	if (mz)
>> It is good to report an error in the case of name truncation, but the patch
>> does more. It changes format of the memzone name, adds the driver name
>> in it (what is bad since testpmd has commands to find the memzone by name
>> and read descriptors (hack, but sometimes very useful)).
>> Also I'm not sure about function name in the log message. Other places
>> do not have it.
>>
> Maybe MEMZONE_NAMESIZE should be big enough that this should never happen?
> The size is arbitrary anyway.

ring_name is provided by caller, so we can't guarantee it locally.



More information about the dev mailing list