Re: [PATCH net-next] net: sched: cls_u32: Use flexible-array member

From: Cong Wang
Date: Thu Jan 16 2020 - 23:44:11 EST


On Thu, Jan 16, 2020 at 1:36 PM Gustavo A. R. Silva
<gustavo@xxxxxxxxxxxxxx> wrote:
>
> Old code in the kernel uses 1-byte and 0-byte arrays to indicate the
> presence of a "variable length array":
>
> struct something {
> int length;
> u8 data[1];
> };
>
> struct something *instance;
>
> instance = kmalloc(sizeof(*instance) + size, GFP_KERNEL);
> instance->length = size;
> memcpy(instance->data, source, size);

Hmm, your patch is not correct, for u32 it is length+1, so you have
to allocate size+1 after you switch to zero-length array.

Take a look at u32_walk() if you have any doubt.

Thanks.