[PATCH] kexec: x86: struct x86_linux_param_header should be packed

Vivek Goyal vgoyal at redhat.com
Thu Sep 5 10:11:28 EDT 2013


On Thu, Sep 05, 2013 at 04:48:20PM +0800, WANG Chao wrote:
> On 08/05/13 at 01:35pm, Vivek Goyal wrote:
> > I think struct x86_linux_param_header should be packed. Strange that we
> > did not do it so far. 
> > 
> > Without packing struct size was 3824 (decimal) on my x86_64 machine. With
> > packing it is 3820. I think there was a padding of 4 bytes at the end. So
> > it should be harmless.
> > 
> > I tried to introduce more fields and that introduced padding in the
> > middle of structure and kexec stopped working and that's how I got to
> > know that bootparam is not packed.
> 
> In this case that's true and x86_linux_param_header should be packed.
> 
> One more thing is,
> in include/x86/x86-linux.h, we already define PACKED macro:
>  #define PACKED __attribute__((packed))
> But within x86-linux.h, both PACKED_and __attribute__((packed)) are used.
> 
> PACKED isn't used much time and __attribute__((packed)) is quite simple
> and straightforward. Maybe it's time we can remove the macro and use
> __attribute__((packed)) directly.
> 
> I can send another patch to address this if anyone thinks it's a good
> idea.

I think there is really no need to use macro PACKED. So making the code
uniform does not hurt.

Thanks
Vivek



More information about the kexec mailing list