Sto lavorando con un grande software embedded (processore ARM, embedded linux 2.6.31, busybox) che coinvolge sia il kernel che lo user space code. C'è un modulo del kernel normalmente caricato per primo e demone che stabilisce il socket netlink con il modulo.impossibile "rmmod" il modulo
Il problema qui è che dopo aver ucciso il demone, non sono più in grado di scaricare il modulo dalla memoria:
% rmmod _module.ko
% rmmod: _module.ko: Resource temporarily unavailable
L'analisi ha dimostrato che l'errore (valore di ritorno è -11
, cioè EAGAIN
?) viene restituito da try_stop_module()
richiamato in syscall delete_module()
definizione in kernel/module.c
. Funzione try_stop_module() a sua volta chiama stop_machine() e questo è il punto in cui mi sono bloccato, come
Non sono sicuro di cosa sta succedendo esattamente lì. Penso che la causa principale sia da qualche parte nel daemon che apre le connessioni al modulo e ovviamente qualcos'altro e non chiude/pulisce correttamente all'uscita (apparentemente alcuni riferimenti/blocchi non vengono rilasciati?)
Qualcuno ha Qualche idea su cos'altro guardare e sondare?
Solo una stupida idea ... rmmod -f ... forzare lo scarico? –