CONFIG_KALLSYMS triggers oops on load_module()

Hello.

I am compiling a kernel 3.49.10 for the AR9342 which integrates an embedded MIPS 74Kc processor.

Everything works normally until I set CONFIG_KALLSYMS=y and recompile the kernel. Then, when the system starts this problem arises. I tried to search for similar issues regargins "KALLSYMS and loading modules", but failed in finding anything useful.

The following is the log from kernel when the oops happens:

[    1.144000] Freeing unused kernel memory: 216K (802ea000 - 80320000)
[    3.176000] CPU 0 Unable to handle kernel paging request at virtual address 0000000c, epc == 80186ca8, ra == 80186c90
[    3.184000] Oops[#1]:
[    3.184000] CPU: 0 PID: 221 Comm: kmodloader Not tainted 3.10.49 #2
[    3.184000] task: 83d00430 ti: 834b4000 task.ti: 834b4000
[    3.184000] $ 0   : 00000000 00000063 00000000 834ce094
[    3.184000] $ 4   : 802e5bb4 834cdfa8 00000001 fffffffc
[    3.184000] $ 8   : 00000000 80064508 801ff738 00000000
[    3.184000] $12   : 802de850 00000031 00000000 725f616c
[    3.184000] $16   : 834cdf60 834b5ee0 fffffff8 834cdf6c
[    3.184000] $20   : 834cdfa8 802e0000 8029ef14 00000000
[    3.184000] $24   : 00000000 00000000                  
[    3.184000] $28   : 834b4000 834b5e20 802e0000 80186c90
[    3.184000] Hi    : 0000001c
[    3.184000] Lo    : 00000014
[    3.184000] epc   : 80186ca8 load_module+0x1784/0x1b34
[    3.184000]     Not tainted
[    3.184000] ra    : 80186c90 load_module+0x176c/0x1b34
[    3.184000] Status: 1100d403 KERNEL EXL IE 
[    3.184000] Cause : 00800008
[    3.184000] BadVA : 0000000c
[    3.184000] PrId  : 0001974c (MIPS 74Kc)
[    3.184000] Modules linked in: crypto_hash(+)
[    3.184000] Process kmodloader (pid: 221, threadinfo=834b4000, task=83d00430, tls=778d0440)
[    3.184000] Stack : 00400000 8018cccc 00000004 00000000 834cdf6c 00007fff 800ee4c8 834bd500
[    3.184000]    00000000 00000000 834cda84 0000001f 00000000 00000000 fffcd000 000000d2
[    3.184000]    80071f98 83d00430 834bd494 00000000 00a05478 000044eb 004031a8 000044eb
[    3.184000]    004031a8 800a6930 00000000 00000000 834ce090 834ce290 834ce094 00000000
[    3.184000]    c008cf34 80071f98 00a05478 000044eb 004031a8 000044eb 004031a8 00410000
[    3.184000]    ...
[    3.184000] Call Trace:
[    3.184000] [<80186ca8>] load_module+0x1784/0x1b34
[    3.184000] [<80072000>] SyS_init_module+0xbc/0xd4
[    3.184000] [<800621b0>] stack_done+0x20/0x44
[    3.184000] 
[    3.184000] 
[    3.184000] Code: 26420008  10620007  02802821 <8e420014> 02603021  0c08710e  8c440084  08061b25  8e520008 
[    3.352000] ---[ end trace f7d1f2d535f27344 ]---

I appreciate any help that may lead me to a solution to this problem.

Thank you very much!

Sounds like you're using an "ancient" OpenWrt tree? Current OpenWrt is on 4.4 or later.

Indeed it's "ancient":

gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 2723a3)

However I need this specific version for a project.