intrepidcs / intrepid-socketcan-kernel-module

Kernel-mode SocketCAN module for Intrepid devices
17 stars 6 forks source link

Invalid module format #13

Closed RSodhaFCA closed 2 years ago

RSodhaFCA commented 2 years ago

I am getting Invalid module format error on Ubuntu 20.04. Do you know what could be the reason?

# uname -a
Linux fca-ubuntu-two 5.13.0-39-generic #44~20.04.1-Ubuntu SMP Thu Mar 24 16:43:35 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

# make reload
make -C /lib/modules/5.13.0-39-generic/build M=/home/t6100rs/intrepid-socketcan-kernel-module modules
make[1]: Entering directory '/usr/src/linux-headers-5.13.0-39-generic'
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-39-generic'
sudo rmmod intrepid
rmmod: ERROR: Module intrepid is not currently loaded
make: [Makefile:13: reload] Error 1 (ignored)
sudo modprobe can
sudo modprobe can_raw
sudo modprobe can_dev
sudo insmod intrepid.ko
insmod: ERROR: could not insert module intrepid.ko: Invalid module format
make: *** [Makefile:17: reload] Error 1
# 
hollinsky-intrepid commented 2 years ago

Is it possible that it was compiled with a different kernel? I would start by doing a make clean to force it to recompile.

There may also be more information near the end of dmesg.

RSodhaFCA commented 2 years ago

cleaned and rebuilt, but same error.

root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# make clean
make -C /lib/modules/5.13.0-39-generic/build M=/home/t6100rs/intrepid-socketcan-kernel-module clean
make[1]: Entering directory '/usr/src/linux-headers-5.13.0-39-generic'
  CLEAN   /home/t6100rs/intrepid-socketcan-kernel-module/Module.symvers
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-39-generic'

root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# make
make -C /lib/modules/5.13.0-39-generic/build M=/home/t6100rs/intrepid-socketcan-kernel-module modules
make[1]: Entering directory '/usr/src/linux-headers-5.13.0-39-generic'
  CC [M]  /home/t6100rs/intrepid-socketcan-kernel-module/intrepid.o
  MODPOST /home/t6100rs/intrepid-socketcan-kernel-module/Module.symvers
  CC [M]  /home/t6100rs/intrepid-socketcan-kernel-module/intrepid.mod.o
  LD [M]  /home/t6100rs/intrepid-socketcan-kernel-module/intrepid.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-39-generic'

root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# make reload
make -C /lib/modules/5.13.0-39-generic/build M=/home/t6100rs/intrepid-socketcan-kernel-module modules
make[1]: Entering directory '/usr/src/linux-headers-5.13.0-39-generic'
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-39-generic'
sudo rmmod intrepid
rmmod: ERROR: Module intrepid is not currently loaded
make: [Makefile:13: reload] Error 1 (ignored)
sudo modprobe can
sudo modprobe can_raw
sudo modprobe can_dev
sudo insmod intrepid.ko
insmod: ERROR: could not insert module intrepid.ko: Invalid module format
make: *** [Makefile:17: reload] Error 1

root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# dmesg | tail
[ 7747.474136] i2c_amd_mp2 0000:05:00.7: received irq without message
[ 7816.379566] i2c_amd_mp2 0000:05:00.7: received irq without message
[ 8048.507773] i2c_amd_mp2 0000:05:00.7: received irq without message
[ 8941.621413] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 0000000062a31408, val ffffffffc148a117

I see invalid relocation target error in dmesg, not sure if this is file system operation or memory operation.

hollinsky-intrepid commented 2 years ago

The invalid relocation target is related. Were you having issues with secure boot/module signing previously? I can see some articles pointing to sudo depmod solving this problem. If you have not restarted your computer lately, that may be a good step to take.

Additionally, if you check cc --version, do you see the GCC version? Is there anything if you run echo $CC?

RSodhaFCA commented 2 years ago
root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# cc --version
cc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# echo $CC

root@fca-ubuntu-two:/home/t6100rs/intrepid-socketcan-kernel-module# 

echo $CC does not produce anything.

I did have issue with secure boot. I disabled secure boot and restarted machine. But let me double check secure boot config. Doing so I will restart machine.

RSodhaFCA commented 2 years ago

Tried on a different machine where I had not tinkered with secure boot. But still getting same behavior.

t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ sudo make
make -C /lib/modules/5.13.0-40-generic/build M=/home/t6100rs/Git/intrepid-socketcan-kernel-module modules
make[1]: Entering directory '/usr/src/linux-headers-5.13.0-40-generic'
  CC [M]  /home/t6100rs/Git/intrepid-socketcan-kernel-module/intrepid.o
  MODPOST /home/t6100rs/Git/intrepid-socketcan-kernel-module/Module.symvers
  CC [M]  /home/t6100rs/Git/intrepid-socketcan-kernel-module/intrepid.mod.o
  LD [M]  /home/t6100rs/Git/intrepid-socketcan-kernel-module/intrepid.ko
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-40-generic'
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ ls -ltr
total 1500
-rw-rw-r-- 1 t6100rs t6100rs   1866 Apr 21 12:13 README.md
-rw-rw-r-- 1 t6100rs t6100rs   5212 Apr 21 12:13 neomessage.h
-rw-rw-r-- 1 t6100rs t6100rs    202 Apr 21 12:13 Kconfig
-rw-rw-r-- 1 t6100rs t6100rs  26554 Apr 21 12:13 intrepid.c
-rw-rw-r-- 1 t6100rs t6100rs   1235 Apr 21 12:13 CHANGELOG
-rw-rw-r-- 1 t6100rs t6100rs    497 Apr 21 12:20 Makefile
-rw-r--r-- 1 root    root    624488 Apr 21 12:21 intrepid.o
-rw-r--r-- 1 root    root        63 Apr 21 12:21 intrepid.mod
-rw-r--r-- 1 root    root        63 Apr 21 12:21 modules.order
-rw-r--r-- 1 root    root      2444 Apr 21 12:21 intrepid.mod.c
-rw-r--r-- 1 root    root         0 Apr 21 12:21 Module.symvers
-rw-r--r-- 1 root    root    108632 Apr 21 12:21 intrepid.mod.o
-rw-r--r-- 1 root    root    731312 Apr 21 12:21 intrepid.ko
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ sudo make reload
make -C /lib/modules/5.13.0-40-generic/build M=/home/t6100rs/Git/intrepid-socketcan-kernel-module modules
make[1]: Entering directory '/usr/src/linux-headers-5.13.0-40-generic'
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-40-generic'
sudo rmmod intrepid
rmmod: ERROR: Module intrepid is not currently loaded
make: [Makefile:13: reload] Error 1 (ignored)
sudo modprobe can
sudo modprobe can_raw
sudo modprobe can_dev
sudo insmod intrepid.ko
insmod: ERROR: could not insert module intrepid.ko: Invalid module format
make: *** [Makefile:17: reload] Error 1
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ dmesg | tail
[ 8498.638251] ax88179_178a 2-2.1:1.0 enx14b1c8004ffc: Failed to read reg index 0x0002: -19
[ 8498.638269] ax88179_178a 2-2.1:1.0 enx14b1c8004ffc: Failed to write reg index 0x0002: -19
[ 8498.856454] ax88179_178a 2-2.1:1.0 enx14b1c8004ffc (unregistered): Failed to write reg index 0x0002: -19
[ 8498.856478] ax88179_178a 2-2.1:1.0 enx14b1c8004ffc (unregistered): Failed to write reg index 0x0001: -19
[ 8498.856489] ax88179_178a 2-2.1:1.0 enx14b1c8004ffc (unregistered): Failed to write reg index 0x0002: -19
[11795.154228] can: controller area network core
[11795.154270] NET: Registered protocol family 29
[11802.938444] can: raw protocol
[11808.489858] CAN device driver interface
[12183.761549] module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc 00000000a7ab9b6e, val ffffffffc194f117
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ uname -a
Linux fca-mu-one 5.13.0-40-generic #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ cc --version
cc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ echo $CC

t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ 

Headers seems to be matching:

t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ sudo modinfo intrepid.ko
filename:       /home/t6100rs/Git/intrepid-socketcan-kernel-module/intrepid.ko
version:        2.1.1
author:         Jeffrey Quesnelle <jeffq@intrepidcs.com>
author:         Paul Hollinsky <phollinsky@intrepidcs.com>
license:        GPL
description:    Netdevice driver for Intrepid CAN/Ethernet devices
srcversion:     DD57E1877A0958CA16852FD
depends:        can-dev
retpoline:      Y
name:           intrepid
vermagic:       5.13.0-40-generic SMP mod_unload modversions 
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ uname -a
Linux fca-mu-one 5.13.0-40-generic #45~20.04.1-Ubuntu SMP Mon Apr 4 09:38:31 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
t6100rs@fca-mu-one:~/Git/intrepid-socketcan-kernel-module$ 
RSodhaFCA commented 2 years ago

I was able to compile and load the module on Ubuntu 18.04 on same laptop (i.e. same UEFI config). That means it's issue with Ubuntu 20.04. It could still be secure boot UEFI config but not sure.

RSodhaFCA commented 2 years ago

After disabling Secure Boot I had to reinstall the OS. After doing that I was able to build and insmod intrepid module on Ubuntu 22.04. There was a glitch where I had to reinstall linux-generic-headers but apart from that everything went well.

Though I am still not able to use ValueCAN3 device to generate candump but its for another issue.

Thanks for the support.