IB/hfi1: Use struct_size()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sat, 22 Jul 2023 16:47:24 +0000 (18:47 +0200)
committerLeon Romanovsky <leon@kernel.org>
Mon, 24 Jul 2023 11:43:12 +0000 (14:43 +0300)
Use struct_size() instead of hand-writing it, when allocating a structure
with a flex array.

This is less verbose, more robust and more informative.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/f4618a67d5ae0a30eb3f2b4558c8cc790feed79a.1690044376.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hfi1/pio.c

index 62e7dc9..dfea53e 100644 (file)
@@ -1893,9 +1893,7 @@ int pio_map_init(struct hfi1_devdata *dd, u8 port, u8 num_vls, u8 *vl_scontexts)
                        vl_scontexts[i] = sc_per_vl + (extra > 0 ? 1 : 0);
        }
        /* build new map */
-       newmap = kzalloc(sizeof(*newmap) +
-                        roundup_pow_of_two(num_vls) *
-                        sizeof(struct pio_map_elem *),
+       newmap = kzalloc(struct_size(newmap, map, roundup_pow_of_two(num_vls)),
                         GFP_KERNEL);
        if (!newmap)
                goto bail;
@@ -1910,9 +1908,8 @@ int pio_map_init(struct hfi1_devdata *dd, u8 port, u8 num_vls, u8 *vl_scontexts)
                        int sz = roundup_pow_of_two(vl_scontexts[i]);
 
                        /* only allocate once */
-                       newmap->map[i] = kzalloc(sizeof(*newmap->map[i]) +
-                                                sz * sizeof(struct
-                                                            send_context *),
+                       newmap->map[i] = kzalloc(struct_size(newmap->map[i],
+                                                            ksc, sz),
                                                 GFP_KERNEL);
                        if (!newmap->map[i])
                                goto bail;