mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02: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:
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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user