--- x/drivers/infiniband/core/device.c +++ y/drivers/infiniband/core/device.c @@ -506,6 +506,7 @@ static void ib_device_release(struct dev if (dev->hw_stats_data) ib_device_release_hw_stats(dev->hw_stats_data); if (dev->port_data) { + ib_cache_cleanup_one(dev); ib_cache_release_one(dev); ib_security_release_port_pkey_list(dev); rdma_counter_release(dev); --- x/drivers/infiniband/core/cache.c +++ y/drivers/infiniband/core/cache.c @@ -824,7 +824,7 @@ static void cleanup_gid_table_port(struc mutex_lock(&table->lock); for (i = 0; i < table->sz; ++i) { - if (is_gid_entry_valid(table->data_vec[i])) + if (table->data_vec[i]) del_gid(ib_dev, port, table, i); } mutex_unlock(&table->lock);