[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