Messages in this thread | | | Date | Wed, 2 Feb 2011 15:59:49 -0800 | From | Dmitry Torokhov <> | Subject | Re: Early crash (was: Re: module: show version information for built-in modules in sysfs) |
| |
On Wed, Feb 02, 2011 at 02:52:04PM -0800, Andreas Schwab wrote: > Dmitry Torokhov <dtor@vmware.com> writes: > > > But why is it aligned on 2-byte boundary and why m64k is not happy with > > module_version_attribute but is happy with kernel_param which is also > > aligned similarly? > > struct kernel_parm doesn't contain internal padding on 32 bit > architectures (it does on 64bit architectures though). > > > If we unroll module_version_attribute it woud look like this: > > > > struct module_version_attribute { > > > > struct module_attribute { > > > > struct attribute { > > const char *name; > > mode_t mode; > > } attr; > > ... > > > > } mattr; > > > > const char *module_name; > > const char *version; > > }; > > > > So I would expect it be aligned on (char *) boundary which should be the > > same as (void *). > > mode_t is a 16 bit type, thus any following member becomes aligned on an > odd 2 byte boundary.
Even pointers? I'd expect pointers to be aligned on 4-bytes boundaries?
Thanks,
Dmitry
| |