Thread (2 messages) 2 messages, 2 authors, 2011-02-02

Re: Early crash (was: Re: module: show version information for built-in modules in sysfs)

From: Dmitry Torokhov <hidden>
Date: 2011-02-02 23:59:56
Also in: linux-m68k, lkml

Possibly related (same subject, not in this thread)

On Wed, Feb 02, 2011 at 02:52:04PM -0800, Andreas Schwab wrote:
Dmitry Torokhov [off-list ref] writes:
quoted
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).
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help