[v4,2/5] raw/gdtc: add support for queue setup operation

Stephen Hemminger stephen at networkplumber.org
Tue Nov 12 06:05:05 CET 2024


On Tue, 29 Oct 2024 21:45:24 +0800
Yong Zhang <zhang.yong25 at zte.com.cn> wrote:

> +	/* Init sw_ring */
> +	memset(name, 0, sizeof(name));
> +	snprintf(name, RTE_RAWDEV_NAME_MAX_LEN, "gdma_vq%d_sw_ring", queue_id);
> +	size = queue->queue_size * sizeof(struct zxdh_gdma_job *);
> +	queue->sw_ring.job = rte_zmalloc(name, size, 0);

This works as is, but:
	1. Do not need memset() before snprintf since snprintf will create null terminated string
	2. rte_zmalloc() doesn't really care about the name arg
	3. You should be using rte_calloc() if it is an array, because that is more common
           and may help some checkers in future when DPDK can tell compiler that rte_calloc is functional
	   equivalent of calloc().
	4. The name is being used as a memzone name, and not a rawdev name.
		RTE_RAWDEV_NAME_MAX_LEN = 64
                RTE_MEMZONE_NAMESIZE = 32
           so you are at some risk of future bug where memzone names becomes too long.


		> +
> +	if (queue->sw_ring.job != NULL)
> +		rte_free(queue->sw_ring.job);
> +
> +	if (queue->ring.ring_mz != NULL)
> +		rte_memzone_free(queue->ring.ring_mz);

Both these function handle NULL as a no-op, so the check for NULL is unnecessary.
There is a coccinelle script that finds these.


More information about the dev mailing list