From: Patrisious Haddad Date: Mon, 21 Nov 2022 09:59:28 +0000 (+0200) Subject: IB/core: Reorder GID delete code for RoCE X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a019b1258da14058668e249ade33b8b2951aaeae;p=linux.git IB/core: Reorder GID delete code for RoCE Reorder GID delete code so that the driver del_gid operation is executed before nullifying the gid attribute ndev parameter, this allows drivers to access the ndev during their gid delete operation, which makes more sense since they had access to it during the gid addition operation. Signed-off-by: Patrisious Haddad Signed-off-by: Leon Romanovsky --- diff --git a/drivers/infiniband/core/cache.c b/drivers/infiniband/core/cache.c index 2e91d88793265..73f913cbd146a 100644 --- a/drivers/infiniband/core/cache.c +++ b/drivers/infiniband/core/cache.c @@ -400,6 +400,9 @@ static void del_gid(struct ib_device *ib_dev, u32 port, table->data_vec[ix] = NULL; write_unlock_irq(&table->rwlock); + if (rdma_cap_roce_gid_table(ib_dev, port)) + ib_dev->ops.del_gid(&entry->attr, &entry->context); + ndev_storage = entry->ndev_storage; if (ndev_storage) { entry->ndev_storage = NULL; @@ -407,9 +410,6 @@ static void del_gid(struct ib_device *ib_dev, u32 port, call_rcu(&ndev_storage->rcu_head, put_gid_ndev); } - if (rdma_cap_roce_gid_table(ib_dev, port)) - ib_dev->ops.del_gid(&entry->attr, &entry->context); - put_gid_entry_locked(entry); }