struct mask_array *new;
 
        size = max(MASK_ARRAY_SIZE_MIN, size);
-       new = kzalloc(sizeof(struct mask_array) +
-                     sizeof(struct sw_flow_mask *) * size +
+       new = kzalloc(struct_size(new, masks, size) +
                      sizeof(u64) * size, GFP_KERNEL);
        if (!new)
                return NULL;
 
        new->masks_usage_zero_cntr = (u64 *)((u8 *)new +
-                                            sizeof(struct mask_array) +
-                                            sizeof(struct sw_flow_mask *) *
-                                            size);
+                                            struct_size(new, masks, size));
 
        new->masks_usage_stats = __alloc_percpu(sizeof(struct mask_array_stats) +
                                                sizeof(u64) * size,