Linux 시스템을 라우터로 사용할 때 커널 메모리 누수

Linux 시스템을 라우터로 사용할 때 커널 메모리 누수

저는 Toradex colibri IMX6ULL SoM을 기반으로 두 개의 임베디드 Linux 시스템(kernel-6.2.10)을 개발 중입니다. 첫 번째(시스템 A)는 Wi-Fi 액세스 포인트(hostapd 사용)로 작동하도록 구성되고 두 번째(시스템 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

내가 잘 못하는 커널 드라이버 코드를 탐구하기 전에, 그것이 맞는지 확인하고 싶었습니다.오직내 문제에 대한 해결책.

어떤 종류의 도움이라도 대단히 감사하겠습니다!

관련 정보