LINUX.ORG.RU

Как избежать застревания модуля в ядре.


0

0

Вообщем после сегфолта модуля, при его загрузки через insmod MODULE, 
он застревает в системе, что то его юзает, и вытащить его не получается даже через

rmmod -f MODULE

вот что ещё есть:

# rmmod -f netfw
ERROR: Removing 'netfw': Device or resource busy
# rmmod netfw
ERROR: Module netfw is in use
# lsmod | grep netfw
netfw                   5632  1      


Что можно сделать в таком случае, т.е. есть ли какие то средства ядра, 
проверка всех параметров не катит, так как всё не предусмотриш, а 
после такого застревания приходиться ребутить тачку что не есть гуд - 
оч. долго.

Заранее спасибо!!!
★★★★★

Ответ на: комментарий от Murr

Так я его не увеличиваю, вот что не понятно.. ну да ладно, попробую уменьшить.

cyclon ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Те или иные компоненты ядра при использовании модуля повышают ему reference count, когда перестают использовать - уменьшают. Это и показывает lsmod. Выгрузить модуль до обнуления refcount нельзя(еще в некоторых случаях нельзя).

В 2.6, что сейчас под рукой, это делается с try_module_get и module_put.

Murr ★★
()
Ответ на: комментарий от Murr

Я сейчас просмотрел ядреный код. Как я понял, чтобы вытянуть модуль с refcount>0 нужно сделать rmmod -f, при этом ядро должно быть собрано с поддержкой CONFIG_MODULE_FORCE_UNLOAD.

Murr ★★
()
Ответ на: комментарий от anonymous

Было б за что. :)

Там, в общем то, 3 момента:
1) refcount
2) зависимости по другим модулям(если другие модули зависят от него)
3) unsafe флаг модуля (модуль себе может такое установить)

По пункту 2 никогда нельзя вытаскивать.
С пунктом 3 можно вытащить _только_ через -f.
При refcount=0 вытаскивается обычно, при >0 вытаскивается только если -f.

-f работает только если ядро собрано с CONFIG_MODULE_FORCE_UNLOAD.

Вроде так.

Murr ★★
()
Ответ на: комментарий от Murr

А можно как--нибудь понять, кто исползует модуль? То есть аналог fuser для ядра?

Совсем другой anonymous.

anonymous
()
Ответ на: комментарий от Murr

А можно какой нить примерчик по понижению юзкаунта, с помощью описанных функций, просто точно не понял как их заюзать, Плз!

cyclon ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.