skbuff_head_cache와 관련된 Mediatek mt76x0u USB WiFi 칩셋의 Linux 커널 메모리 누수

skbuff_head_cache와 관련된 Mediatek mt76x0u USB WiFi 칩셋의 Linux 커널 메모리 누수

저는 32비트 ARM Microchip SAMA5D27 프로세서에서 Linux 6.1을 실행하고 있습니다. 이 마더보드에는 256MB RAM이 있습니다. 저는 Mediatek mt76x0u 칩셋을 사용하여 USB 동글을 마더보드에 연결하고 있습니다.

시작 시 SystemD를 사용하여 아래 구성 파일을 사용하여 wpa_supplicant 2.10을 시작합니다. 플랫폼을 Ad-Hoc 모드로 사용하려는 의도이므로 mode=1.

내가 보는 문제는 결국 커널에 OOM 패닉이 발생한다는 것입니다. 마더보드는 약 1시간 동안 실행된 후에 확실히 패닉 상태가 됩니다. 를 제외한 모든 서비스를 중지하더라도 wpa_supplicant. 나는 커널 메모리를 분석하고 slabtop사용자 공간 메모리 사용량과 최대 커널 사용자를 보여주기 위해 다음 차트를 만들었습니다.

메모리 누수

드라이버에 메모리 누수가 있거나 일부 기본 커널 매개변수로 인해 드라이버가 저성능 장치에서 제대로 작동하지 않는 것 같습니다.

Linux 펌웨어 저장소에서 이 칩셋에 대한 최신 공급업체 펌웨어를 설치했는지 확인했습니다. 가장 큰 사용자는 입니다 skbuff_head_cache.

이 문제를 완화하기 위해 제가 할 수 있는 일이 있나요?

커널에서 어떤 관련 사항을 조정할 수 있나요 skbuff_head_cache?

버전:

wpa_supplicant version
Successfully initialized wpa_supplicant
wpa_supplicant v2.10
Copyright (c) 2003-2022, Jouni Malinen <[email protected]> and contributors

uname -r
6.1.22-linux4microchip-2023.04

정보:

[   29.553651] mt76x0u 1-1:1.0: ASIC revision: 76100002 MAC revision: 76502000
[   32.369384] mt76x0u 1-1:1.0: EEPROM ver:02 fae:04
[   33.046717] usbcore: registered new interface driver mt76x0u
[   52.068860] mt76x0u 1-1:1.0 mediatek: renamed from wlan0
[   63.000388] usbcore: registered new interface driver mt76x2u

구성 파일

lo        no wireless extensions.

eth0      no wireless extensions.

sit0      no wireless extensions.

mediatek  IEEE 802.11  ESSID:"TestAdHoc"  
          Mode:Ad-Hoc  Frequency:2.462 GHz  Cell: DE:AD:BE:EF:DE:AD  
          Tx-Power=20 dBm  
          Retry short limit:7   RTS thr=2347 B   Fragment thr:off
          Encryption key:off
          Power Management:off

WPA 신청자 구성:

ctrl_interface=DIR=/var/run/wpa_supplicant
autoscan=periodic:120
ap_scan=2
filter_ssids=1
bss_max_count=10
network={
    bgscan="simple:120:-70:3600"
    ssid="TestAdHoc"
    bssid=DE:AD:BE:EF:DE:AD
    mode=1
    #frequency=5180
    frequency=2462
    proto=WPA2
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
    psk="password"
    priority=100
}

관련 정보