Linux Kernel 3.x に隠れているカーネル モジュールで遊んでいます。/sys/module からモジュールを非表示にして回復しようとしています。カーネル バージョン 3.0 および 3.2.6 ではすべて正常に動作します。モジュールをロードおよびアンロードし、非表示および再表示できます。カーネル 3.6.6 でモジュールをアンロードすると、次のエラーが発生します。
rmmod: エラー: '/sys/module/xxx/holders' を開けませんでした: そのようなファイルまたはディレクトリはありません rmmod: エラー: モジュール xxx は使用中です
エラーなしでアンロードできるように、モジュールの struct kobject *holders_dir を復元する方法を知っている人はいますか?
これが私のコードです:
/* hide from /sys/module */
kobject_del(&__this_module.mkobj.kobj);
list_del(&__this_module.mkobj.kobj.entry);
/* add to /sys/module */
kobject_add(&__this_module.mkobj.kobj,__this_module.mkobj.kobj.parent,"xxx");