> -----Original Message----- > From: Jason Gunthorpe [mailto:jgg@xxxxxxxx] > Sent: Wednesday, May 23, 2018 5:58 PM > To: Leon Romanovsky <leon@xxxxxxxxxx> > Cc: Doug Ledford <dledford@xxxxxxxxxx>; Leon Romanovsky > <leonro@xxxxxxxxxxxx>; RDMA mailing list <linux-rdma@xxxxxxxxxxxxxxx>; > Parav Pandit <parav@xxxxxxxxxxxx> > Subject: Re: [PATCH rdma-next 1/2] IB/core: Introduce and use > rdma_is_zero_gid() > > On Tue, May 22, 2018 at 08:33:45PM +0300, Leon Romanovsky wrote: > > From: Parav Pandit <parav@xxxxxxxxxxxx> > > > > Instead of open coding memcmp() to check whether a given GID is zero > > or not, use a helper function to do so. > > > > Signed-off-by: Parav Pandit <parav@xxxxxxxxxxxx> > > Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> > > --- > > drivers/infiniband/core/cache.c | 14 ++++++++++++-- > > drivers/infiniband/hw/mlx4/main.c | 2 +- > > drivers/infiniband/hw/mlx4/qp.c | 2 +- > > include/rdma/ib_cache.h | 1 + > > 4 files changed, 15 insertions(+), 4 deletions(-) > > Applied, but I noticed this missed a memcmp, and I decided to drop the > memcpy's too. Here is delta, please check my change. 2 out of 3 changes are fine. cleanup_gid_table_port() cleanup was not needed because in next patch zero gid checking goes away as we completely rely on the state/validity of the gid. But its fine, I will update the next patch to avoid merge conflict. > > Would be nice to see the last two zgid users go away and with them the global > symbol too.. > > diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c > index c09b63f9960387..82699f70e9b60b 100644 > --- a/drivers/infiniband/core/cache.c > +++ b/drivers/infiniband/core/cache.c > @@ -274,7 +274,7 @@ static void del_gid(struct ib_device *ib_dev, u8 port, > > if (rdma_protocol_roce(ib_dev, port)) > del_roce_gid(ib_dev, port, table, ix); > - memcpy(&table->data_vec[ix].gid, &zgid, sizeof(zgid)); > + memset(&table->data_vec[ix].gid, 0, sizeof(table->data_vec[ix].gid)); > memset(&table->data_vec[ix].attr, 0, sizeof(table->data_vec[ix].attr)); > table->data_vec[ix].context = NULL; > } > @@ -734,8 +734,7 @@ static void cleanup_gid_table_port(struct ib_device > *ib_dev, u8 port, > > mutex_lock(&table->lock); > for (i = 0; i < table->sz; ++i) { > - if (memcmp(&table->data_vec[i].gid, &zgid, > - sizeof(table->data_vec[i].gid))) { > + if (!rdma_is_zero_gid(&table->data_vec[i].gid)) { > del_gid(ib_dev, port, table, i); > deleted = true; > } > diff --git a/drivers/infiniband/hw/mlx4/main.c > b/drivers/infiniband/hw/mlx4/main.c > index c6d6c1c3410ecd..bf12394c13c165 100644 > --- a/drivers/infiniband/hw/mlx4/main.c > +++ b/drivers/infiniband/hw/mlx4/main.c > @@ -345,7 +345,8 @@ static int mlx4_ib_del_gid(const struct ib_gid_attr *attr, > void **context) > if (!ctx->refcount) { > unsigned int real_index = ctx->real_index; > > - memcpy(&port_gid_table->gids[real_index].gid, &zgid, > sizeof(zgid)); > + memset(&port_gid_table->gids[real_index].gid, 0, > + sizeof(port_gid_table->gids[real_index].gid)); > kfree(port_gid_table->gids[real_index].ctx); > port_gid_table->gids[real_index].ctx = NULL; > hw_update = 1; -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html