On Sat, Apr 27, 2019 at 11:48 AM wangyunjian <wangyunj...@huawei.com> wrote:
> From: Yunjian Wang <wangyunj...@huawei.com> > > The current dma zone name consists of the port_id, queue_id and > ring_name. If a port_id is reused, a new nic maybe use same dma > zone name. At this time, the zone size of the new driver is > differnt. When the zone is reused, it may cause illegal access > to memory. > > Signed-off-by: Yunjian Wang <wangyunj...@huawei.com> > --- > lib/librte_ethdev/rte_ethdev.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/lib/librte_ethdev/rte_ethdev.c > b/lib/librte_ethdev/rte_ethdev.c > index d7cfa3d..0703cda 100644 > --- a/lib/librte_ethdev/rte_ethdev.c > +++ b/lib/librte_ethdev/rte_ethdev.c > @@ -3630,9 +3630,9 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, > uint16_t queue_idx, > const struct rte_memzone *mz; > int rc; > > - rc = snprintf(z_name, sizeof(z_name), "eth_p%d_q%d_%s", > - dev->data->port_id, queue_id, ring_name); > - if (rc >= RTE_MEMZONE_NAMESIZE) { > + rc = snprintf(z_name, sizeof(z_name), "p%dq%d%s0x%zx_%d", > + dev->data->port_id, queue_id, ring_name, size, > align); > + if (rc >= RTE_MEMZONE_NAMESIZE || rc < 0) { > RTE_ETHDEV_LOG(ERR, "ring name too long\n"); > rte_errno = ENAMETOOLONG; > return NULL; > In such a case, we are leaving the previous memzone in place and just creating a new one. Should the driver free the previous memzone instead? I can't see this in existing drivers. Do we actually expect to reuse the existing memzones? -- David Marchand