[U-Boot] [PATCH] part_efi: fix protective_mbr struct allocation

Fabio Estevam
2014-02-12T17:33:17Z

Hi Albert,

On Wed, Feb 12, 2014 at 2:33 PM, Albert ARIBAUD
<albert.u.boot@aribaud.net> wrote:

>> What about:
>>
>> p_mbr = calloc(1, sizeof(*p_mbr)) ?
>
> I don't like the idea of setting p_mbr based on *p_mbr at a time where
> p_mbr is still undefined. I know that from a C standard perspective
> this is ok, but I'd rather simply not run any risk and pass sizeof
> the struct type, not a (non-existent) dereferenced 'value'.

At least in kernel this is the preferred way.

According to Documentation/CodingStyle:

"Chapter 14: Allocating memory

The preferred form for passing a size of a struct is the following:

p = kmalloc(sizeof(*p), ...);

The alternative form where struct name is spelled out hurts readability and
introduces an opportunity for a bug when the pointer variable type is changed
but the corresponding sizeof that is passed to a memory allocator is not."

Regards,

Fabio Estevam