modprobe: ERROR: could not insert 'module_name': Exec format error
はじめに
modprobeしたが、モジュールをロードできなかった。
問題を解決できなかったが、別アプローチでロードすることはできた。
事象
$ make -C /lib/modules/$(uname -r)/build M="drivers/module_name" modules # make -C /lib/modules/$(uname -r)/build M="drivers/module_name" modules_install # modprobe module_name modprobe: ERROR: could not insert 'module_name': Exec format error $ dmesg module: x86/modules: Skipping invalid relocation target, existing value is nonzero for type 1, loc ffffffffc05af400, val ffffffffc05ad168
対策
makeファイルを自分で書いてmodprobeしたところ、ロードすることができた。
なぞ。
調査
loc = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr
+ rel[i].r_offset;
./arch/x86/kernel/module.cのapply_relocate_add()内で、locが0でないことにより、エラーを吐いている。
elf bss