Linux says a kernel module has an unknown symbol, but another loaded module provides it.

Posted by raldi on Server Fault See other posts from Server Fault or by raldi
Published on 2010-03-19T04:47:32Z Indexed on 2010/03/19 4:51 UTC
Read the original article Hit count: 270

I'm trying to install a driver for a USB DAQ box, which annoyingly, I have to compile myself. I believe I've succeeded -- I have two .ko files:

-rw-r--r--  1 root  root  45271 2010-03-18 21:24 advdrv_core.ko
-rw-r--r--  1 root  root  24312 2010-03-18 21:24 usb4761.ko

I was able to run insmod on the first without incident, but when I try on the second, I get a flood of messages:

kernel: [686782.106547] usb4761: no symbol version for adv_process_info_check_event
kernel: [686782.106555] usb4761: Unknown symbol adv_process_info_check_event
kernel: [686782.106691] usb4761: no symbol version for advdrv_unregister_driver
kernel: [686782.106695] usb4761: Unknown symbol advdrv_unregister_driver

However, advdrv_core.ko provides these symbols. My kernel sure seems to have them in memory:

# cat /proc/kallsyms | grep advdrv_unregister_driver
f8d88504 r __ksymtab_advdrv_unregister_driver   [advdrv_core]
f8d888d2 r __kstrtab_advdrv_unregister_driver   [advdrv_core]
f8d885a4 r __kcrctab_advdrv_unregister_driver   [advdrv_core]
086eb8fb a __crc_advdrv_unregister_driver       [advdrv_core]
f8d86e90 t advdrv_unregister_driver     [advdrv_core]

Why does my insmod claim they're unknown symbols?

© Server Fault or respective owner

Related posts about linux

Related posts about modules