lsmod menunjukkan -2 di kolom “Digunakan oleh”

8

Inilah yang terjadi ketika saya menjalankan lsmod pada papan lengan (banana pi) yang berjalan pada kernel 4.3.0

# lsmod
Module                  Size  Used by
async_raid6_recov       1434  -2
async_pq                5548  -2
async_xor               3771  -2
async_memcpy            1665  -2
sha512_generic          8213  -2
rsa_generic             3235  -2
asn1_decoder            2667  -2
mpi                    13730  -2
poly1305_generic        3386  -2
pcbc                    2396  -2
michael_mic             2051  -2
md4                     3536  -2
ghash_generic           1908  -2
gcm                    10511  -2
fcrypt                  8128  -2
echainiv                2110  -2
crypto_user             4316  -2
crc32                   1581  -2
cmac                    2657  -2
chacha20poly1305        6641  -2
chacha20_generic        2902  -2
ccm                     7537  -2
async_tx                1958  -2
asymmetric_keys         3866  -2
arc4                    1882  -2
algif_aead              5293  -2
ablk_helper             1775  -2
cryptd                  7982  -2
dm_crypt               17382  -2
dm_mod                 84208  -2
algif_skcipher          7502  -2
evdev                  10705  -2
nvmem_sunxi_sid         2444  -2
nvmem_core              7792  -2
sg                     23835  -2
sun4i_ts                3948  -2
cpufreq_dt              4349  -2
ohci_platform           4551  -2
ohci_hcd               28715  -2
sun4i_ss               15192  -2
thermal_sys            30747  -2
hwmon                   2571  -2
uio_pdrv_genirq         2949  -2
uio                     7074  -2
#

Ini adalah / proc / modules kalau-kalau bisa memberikan petunjuk

# cat /proc/modules
async_raid6_recov 1434 - - Live 0xbf140000
async_pq 5548 - - Live 0xbf13b000
async_xor 3771 - - Live 0xbf137000
async_memcpy 1665 - - Live 0xbf133000
sha512_generic 8213 - - Live 0xbf12d000
rsa_generic 3235 - - Live 0xbf129000
asn1_decoder 2667 - - Live 0xbf125000 (P)
mpi 13730 - - Live 0xbf11d000
poly1305_generic 3386 - - Live 0xbf119000
pcbc 2396 - - Live 0xbf115000
michael_mic 2051 - - Live 0xbf111000
md4 3536 - - Live 0xbf10d000
ghash_generic 1908 - - Live 0xbf109000
gcm 10511 - - Live 0xbf102000
fcrypt 8128 - - Live 0xbf0fd000
echainiv 2110 - - Live 0xbf0f9000
crypto_user 4316 - - Live 0xbf0f4000
crc32 1581 - - Live 0xbf0f0000
cmac 2657 - - Live 0xbf0ec000
chacha20poly1305 6641 - - Live 0xbf0e7000
chacha20_generic 2902 - - Live 0xbf0e3000
ccm 7537 - - Live 0xbf0de000
async_tx 1958 - - Live 0xbf0da000
asymmetric_keys 3866 - - Live 0xbf0d6000
arc4 1882 - - Live 0xbf0d2000
algif_aead 5293 - - Live 0xbf0cd000
ablk_helper 1775 - - Live 0xbf0c9000
cryptd 7982 - - Live 0xbf0c3000
dm_crypt 17382 - - Live 0xbf0b9000
dm_mod 84208 - - Live 0xbf099000
algif_skcipher 7502 - - Live 0xbf094000
evdev 10705 - - Live 0xbf08d000
nvmem_sunxi_sid 2444 - - Live 0xbf089000
nvmem_core 7792 - - Live 0xbf083000
sg 23835 - - Live 0xbf078000
sun4i_ts 3948 - - Live 0xbf074000
cpufreq_dt 4349 - - Live 0xbf069000
ohci_platform 4551 - - Live 0xbf064000
ohci_hcd 28715 - - Live 0xbf057000
sun4i_ss 15192 - - Live 0xbf04f000
thermal_sys 30747 - - Live 0xbf040000
hwmon 2571 - - Live 0xbf026000
uio_pdrv_genirq 2949 - - Live 0xbf024000
uio 7074 - - Live 0xbf000000
# 

Masalahnya adalah saya perlu bidang 'Digunakan oleh' menunjukkan modul, kalau tidak saya tidak akan peduli, saya kira.

mijondano
sumber

Jawaban:

7

Dalam konfigurasi kernel Anda ( make config, make menuconfigdll.) Anda harus mengaktifkan CONFIG_MODULE_UNLOAD:

  • Ketika CONFIG_MODULE_UNLOADdiatur, kernel menghitung referensi, karena Anda hanya dapat membongkar modul jika tidak ada referensi untuk itu.

  • Ketika CONFIG_MODULE_UNLOADtidak disetel, maka kernel tidak perlu menghitung berapa banyak referensi yang ada pada modul, dan selalu kembali -2sebagai nilai marker.

Jawaban ini awalnya berasal dari Forum Gentoo .

cutzero
sumber
1

Jumlah referensi modul dibuat di tersedia /sys/module/<module>/refcnt, untuk modul yang dapat dibongkar . Modul yang built-in, atau di kernel dengan CONFIG_MODULE_UNLOAD, tidak memiliki refcntfile yang sesuai .

Untuk menentukan jumlah referensi modul, lsmodsaat ini memanggil kmod_module_get_refcntfungsi di libkmodperpustakaan; yang terakhir mencoba untuk membuka refcntfile untuk membaca jumlah referensi. Untuk modul yang tidak dibongkar, operasi file yang sesuai gagal dan ditetapkan errnoke ENOENT(tidak ada file atau direktori seperti itu), yang 2 di Linux - dan kmod_module_get_refcntmeniadakan itu dan mengembalikannya sebagai jumlah referensi. lsmodmengambil nilai itu dan mengeluarkannya sebagai jumlah referensi.

Inilah sebabnya mengapa lsmodmenunjukkan -2 untuk modul saat CONFIG_MODULE_UNLOADtidak disetel.

Stephen Kitt
sumber