[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#877779: marked as done (linux: modpost uses wrong sizes for mips-octeon kernel)



Your message dated Sun, 27 Feb 2022 12:07:11 -0800 (PST)
with message-id <621bd9ef.1c69fb81.168a3.c3d6@mx.google.com>
and subject line Closing this bug (BTS maintenance for src:linux bugs)
has caused the Debian Bug report #877779,
regarding linux: modpost uses wrong sizes for mips-octeon kernel
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
877779: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=877779
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
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


Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---
--- Begin Message ---
Hi

This bug was filed for a very old kernel or the bug is old itself
without resolution.

If you can reproduce it with

- the current version in unstable/testing
- the latest kernel from backports

please reopen the bug, see https://www.debian.org/Bugs/server-control
for details.

Regards,
Salvatore

--- End Message ---

Reply to: