メモリが破損しているように見えるカーネル モジュールをデバッグしています。基本的に、「net_device」インスタンス用に alloc_netdev() によって割り当てられたメモリの一部が破損しています。
1)カーネルで ,CONFIG_DEBUG_KERNEL
をオンにしましたが、から何が期待できるかわかりません。を読むたびに、疑わしいメモリリークのトレースダンプを出力することになっていますか? によって蓄積された統計/情報をリセットする方法はありますか? 最も重要な - 誰でも出力を解読するのを助けることができますか、例えば:CONFIG_DEBUG_SLAB
CONFIG_DEBUG_KMEMLEAK
.config
kmemleak
/sys/kernel/debug/kmemleak
kmemleak
unreferenced object 0xc625e000 (size 2048):
comm "swapper", pid 1, jiffies 4294937521
backtrace:
[<c00c89f0>] create_object+0x11c/0x200
[<c00c6764>] __kmalloc_track_caller+0x138/0x178
[<c01d78c0>] __alloc_skb+0x4c/0x100
[<c01d8490>] dev_alloc_skb+0x18/0x3c
[<c0198b48>] eth_rx_fill+0xd8/0x3fc
[<c019ac74>] mv_eth_start_internals+0x30/0xf8
[<c019c5fc>] mv_eth_start+0x70/0x244
[<c019c810>] mv_eth_open+0x40/0x64
[<c01e00f0>] dev_open+0xb4/0x118
[<c01df788>] dev_change_flags+0x90/0x168
[<c001a3e4>] ip_auto_config+0x1bc/0xecc
[<c00212f4>] do_one_initcall+0x5c/0x1bc
[<c00083d0>] kernel_init+0x8c/0x108
[<c0022f58>] kernel_thread_exit+0x0/0x8
[<ffffffff>] 0xffffffff
2)このメモリに「読み取り専用」属性を適用できるかどうかも疑問に思っていました。この方法でOops
、誰かがメモリを変更しようとしたときに生成されると予想されます。合理的に聞こえますか?
アドバイスをいただければ幸いです。
マーク