lsmod affiche -2 dans la colonne "Utilisé par"

8

C'est ce qui se passe lorsque j'exécute lsmod sur une carte de bras (banana pi) fonctionnant sur le noyau 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
#

C'est / proc / modules juste au cas où il pourrait fournir un indice

# 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
# 

Le truc, c'est que j'ai besoin du champ 'Utilisé par' montrant les modules, sinon je m'en fiche, je suppose.

mijondano
la source

Réponses:

7

Dans votre configuration de noyau ( make config, make menuconfigetc.), vous devez activer CONFIG_MODULE_UNLOAD:

  • Lorsque CONFIG_MODULE_UNLOADest défini, le noyau compte les références, car vous ne pouvez décharger un module que s'il n'y a aucune référence.

  • Quand CONFIG_MODULE_UNLOADn'est pas défini, le noyau n'a pas besoin de compter le nombre de références à un module et il retourne toujours -2comme valeur de marqueur.

Cette réponse provenait à l' origine des forums Gentoo .

cutzero
la source
1

Le décompte des références de module est disponible dans /sys/module/<module>/refcnt, pour les modules qui peuvent être déchargés . Les modules qui sont intégrés, ou sur des noyaux avec CONFIG_MODULE_UNLOAD, n'ont pas de refcntfichier correspondant .

Pour déterminer le nombre de références d'un module, de lsmodnos jours appelle la kmod_module_get_refcntfonction dans la libkmodbibliothèque; ce dernier essaie d'ouvrir le refcntfichier pour lire le décompte de références. Pour les modules qui ne sont pas déchargées, l'opération de fichier correspondant échoue et ensembles errnoà ENOENT(pas un tel fichier ou le répertoire), qui est 2 sur Linux - et les kmod_module_get_refcntannule que et le renvoie comme le nombre de références. lsmodprend cette valeur et la renvoie comme compte de référence.

C'est pourquoi lsmodaffiche -2 pour les modules lorsque CONFIG_MODULE_UNLOADn'est pas défini.

Stephen Kitt
la source