Linuxシステムをルーターとして使用するときのカーネルメモリリーク

Linuxシステムをルーターとして使用するときのカーネルメモリリーク

私はToradex colibri IMX6ULL SoMに基づいて2つの組み込みLinuxシステム(kernel-6.2.10)を開発しています。最初(システムA)はWi-Fiアクセスポイント(hostapdを使用)として機能するように構成され、2番目(システムB)はそのアクセスポイント(wpa_supplicantを使用)に接続されます。

システムAを介してシステムBからマイPCにFTPデータを転送しようとすると、システムAでメモリリークが観察されました。これはこの構成でのみ発生します。システムAからマイPCにデータを転送してもメモリリークは現れませんでした。

あらゆるタイプのネットワーク通信で再現可能に見えますが、FTPデータ転送を使用すると再現がより簡単になります。

kmemleakを使用して、メモリリークがMarvellドライバmwifiexで発生したことがわかりました。

  unreferenced object 0x83a2f540 (size 184):
  comm "kworker/0:2", pid 43, jiffies 4294947832 (age 162.950s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<802864f0>] kmem_cache_alloc+0x188/0x2c4
    [<808946f0>] __netdev_alloc_skb+0xe8/0x194
    [<7f01af44>] ieee80211_amsdu_to_8023s+0x1b0/0x498 [cfg80211]
    [<7f1528e4>] mwifiex_11n_dispatch_pkt+0x7c/0x174 [mwifiex]
    [<7f1535ac>] mwifiex_11n_rx_reorder_pkt+0x388/0x3dc [mwifiex]
    [<7f1640f4>] mwifiex_process_uap_rx_packet+0xc0/0x200 [mwifiex]
    [<7f075ee8>] mwifiex_decode_rx_packet+0x1d4/0x224 [mwifiex_sdio]
    [<7f07858c>] mwifiex_process_int_status+0x850/0xd70 [mwifiex_sdio]
    [<7f1480a4>] mwifiex_main_process+0x124/0xa30 [mwifiex]
    [<8080b9c4>] process_sdio_pending_irqs+0xe4/0x1d8
    [<8080bc90>] sdio_irq_work+0x3c/0x64
    [<80134fa0>] process_one_work+0x1d8/0x3e4
    [<80135204>] worker_thread+0x58/0x54c
    [<8013c9f0>] kthread+0xcc/0xe8
    [<80100148>] ret_from_fork+0x14/0x2c
unreferenced object 0x82fa2a40 (size 184):
  comm "kworker/0:2", pid 43, jiffies 4294947833 (age 162.940s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<80286228>] kmem_cache_alloc_node+0x198/0x2d8
    [<808922b8>] __alloc_skb+0x10c/0x168
    [<80894644>] __netdev_alloc_skb+0x3c/0x194
    [<7f14ce9c>] mwifiex_alloc_dma_align_buf+0x14/0x40 [mwifiex]
    [<7f07852c>] mwifiex_process_int_status+0x7f0/0xd70 [mwifiex_sdio]
    [<7f1480a4>] mwifiex_main_process+0x124/0xa30 [mwifiex]
    [<8080b9c4>] process_sdio_pending_irqs+0xe4/0x1d8
    [<8080bc90>] sdio_irq_work+0x3c/0x64
    [<80134fa0>] process_one_work+0x1d8/0x3e4
    [<80135204>] worker_thread+0x58/0x54c
    [<8013c9f0>] kthread+0xcc/0xe8
    [<80100148>] ret_from_fork+0x14/0x2c

私がうまくいかないカーネルドライバコードを探る前に、それが正しいことを確認したかったのです。ただ私の問題に対する解決策。

どんな助けでも大変感謝します!

ベストアンサー1

おすすめ記事