mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 06:41:39 -04:00
RDMA/core: Use kzalloc_flex for GID table
Simplifies allocations by using a flexible array member in struct ib_gid_table. Add __counted_by to get extra runtime analysis. Signed-off-by: Rosen Penev <rosenp@gmail.com> Link: https://patch.msgid.link/20260327030124.8385-1-rosenp@gmail.com Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
committed by
Leon Romanovsky
parent
dbeb256e8d
commit
cef2842c92
@@ -116,9 +116,9 @@ struct ib_gid_table {
|
||||
/* rwlock protects data_vec[ix]->state and entry pointer.
|
||||
*/
|
||||
rwlock_t rwlock;
|
||||
struct ib_gid_table_entry **data_vec;
|
||||
/* bit field, each bit indicates the index of default GID */
|
||||
u32 default_gid_indices;
|
||||
struct ib_gid_table_entry *data_vec[] __counted_by(sz);
|
||||
};
|
||||
|
||||
static void dispatch_gid_change_event(struct ib_device *ib_dev, u32 port)
|
||||
@@ -770,24 +770,16 @@ const struct ib_gid_attr *rdma_find_gid_by_filter(
|
||||
|
||||
static struct ib_gid_table *alloc_gid_table(int sz)
|
||||
{
|
||||
struct ib_gid_table *table = kzalloc_obj(*table);
|
||||
struct ib_gid_table *table = kzalloc_flex(*table, data_vec, sz);
|
||||
|
||||
if (!table)
|
||||
return NULL;
|
||||
|
||||
table->data_vec = kzalloc_objs(*table->data_vec, sz);
|
||||
if (!table->data_vec)
|
||||
goto err_free_table;
|
||||
table->sz = sz;
|
||||
|
||||
mutex_init(&table->lock);
|
||||
|
||||
table->sz = sz;
|
||||
rwlock_init(&table->rwlock);
|
||||
return table;
|
||||
|
||||
err_free_table:
|
||||
kfree(table);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void release_gid_table(struct ib_device *device,
|
||||
|
||||
Reference in New Issue
Block a user