Pertanyaan Apa yang akan terjadi jika dua modul kernel mengekspor simbol yang sama


Jika dua modul kernel berisi EXPORT_SYMBOL (a), a didefinisikan sebagai: int a, apa yang akan terjadi jika dua modul dimasukkan? yang mana "a" akan digunakan?


5
2017-08-11 01:45


asal


Jawaban:


Anda tidak dapat memasukkan simbol duplikat ke dalam kernel. Contoh:

Itu xor modul dimuat di kernel saya

nwatkins@kyoto:~$ lsmod | grep xor
xor                     4685  1 async_xor

Diekspor xor_blocks simbol dalam xor modul

nwatkins@kyoto:~$ nm /lib/modules/2.6.32-24-generic/kernel/crypto/xor.ko  | grep xor_blocks
0000000000000000 r __kcrctab_xor_blocks
0000000000000000 r __kstrtab_xor_blocks
0000000000000000 r __ksymtab_xor_blocks
0000000000000bb0 T xor_blocks

Lain diekspor xor_blocks simbol dalam modul yang saya buat

nwatkins@kyoto:~$ nm mod-t1.ko  | grep xor
0000000000000000 r __kcrctab_xor_blocks
0000000000000000 r __kstrtab_xor_blocks
0000000000000000 r __ksymtab_xor_blocks
0000000000000000 T xor_blocks

Kesalahan dilaporkan dari insmod

nwatkins@kyoto:~$ sudo insmod mod-t1.ko 
insmod: error inserting 'mod-t1.ko': -1 Invalid module format

Pesan galat duplikat dari dmesg

[422002.174033] mod_t1: exports duplicate symbol xor_blocks (owned by xor)

8
2017-08-13 14:50