Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.debian.kernel > #59114

Bug#877779: linux: modpost uses wrong sizes for mips-octeon kernel

From James Cowgill <jcowgill@debian.org>
Newsgroups linux.debian.bugs.dist, linux.debian.kernel
Subject Bug#877779: linux: modpost uses wrong sizes for mips-octeon kernel
Date 2017-10-05 16:30 +0200
Message-ID <uxfjX-405-5@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Cross-posted to 2 groups.

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

Source: linux
Version: 4.12.13-1
Severity: normal

Hi,

I recently attempted to install an out-of-tree module (an old version of
the octeon mmc driver) on an octeon machine running big endian 32-bit
mips. In this configuration, the kernel is 64-bit, but userspace is 32-bit.

The module build failed with this error:
> LD [M]  /var/lib/dkms/octeon-mmc/9/build/octeon-mmc.o
>   Building modules, stage 2.
>   MODPOST 1 modules
> FATAL: /var/lib/dkms/octeon-mmc/9/build/octeon-mmc: sizeof(struct of_device_id)=196 is not a modulo of the size of section __mod_of__<identifier>_device_table=600.
> Fix definition of struct of_device_id in mod_devicetable.h

of_device_id is defined like this in mod_devicetable.h:
> struct of_device_id {
> 	char	name[32];
> 	char	type[32];
> 	char	compatible[128];
> 	const void *data;
> };

The size of this structure is 200 bytes and not 196 byte as modpost
claims because the kernel is compiled as 64-bit (so the pointer at the
end is 8 bytes instead of 4).

I think there is a bug in the way Debian compiles modpost, because using
upstream's modpost works correctly. I see that the
real-XXX/devicetable-offsets.s file gets compiled with the target
compiler, but not with the target flags so flags such as "-mabi=64
-mnoabicalls" which are used in 64-bit MIPS kernels are not used. This
will cause the compiler to default to the userspace ABI which is 32-bit
in this case.

I'm not sure what the correct solution is here. Using the target flags
directly might make modpost specific to a kernel flavour. Hacking in
some special flags for mips* doesn't sound great either.

I have not tested any other platforms, but I am guessing this issue will
affect other platforms when the size of pointers in userspace and the
kernel differ.

James


Back to linux.debian.kernel | Previous | Next | Find similar | Unroll thread


Thread

Bug#877779: linux: modpost uses wrong sizes for mips-octeon kernel James Cowgill <jcowgill@debian.org> - 2017-10-05 16:30 +0200

csiph-web