CVE-2023-54020 in Linux
Zusammenfassung
von VulDB • 26.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
dmaengine: sf-pdma: Fehlerbehebung für Speicherleck in pdma_desc
Das Commit b2cc5c465c2c („dmaengine: sf-pdma: Multithread-Unterstützung für einen DMA-Kanal hinzufügen“) änderte die Funktion `sf_pdma_prep_dma_memcpy()`, sodass bei jedem Aufruf bedingungslos ein neues `sf_pdma_desc` allokiert wird.
Der Treiber hatte zuvor Deskriptoren (descs) wiederverwendet, indem er das Flag `in_use` prüfte und nur zusätzliche Deskriptore allozierte, wenn der vorhandene bereits in Verwendung war. Diese Logik wurde im Commit b2cc5c465c2c („dmaengine: sf-pdma: Multithread-Unterstützung für einen DMA-Kanal hinzufügen“) entfernt, jedoch wurde `sf_pdma_free_desc()` nicht angepasst, um das neue Verhalten zu berücksichtigen.
Infolgedessen wird jedes Mal, wenn `sf_pdma_prep_dma_memcpy()` aufgerufen wird, der vorherige Deskriptor nicht freigegeben (geleakt), was im Laufe der Zeit zu einem Speicherengpass führt:
unreferenced object 0xffffffe008447300 (size 192): comm "irq/39-mchp_dsc", pid 343, jiffies 4294906910 (age 981.200s) hex dump (first 32 bytes): 00 00 00 ff 00 00 00 00 b8 c1 00 00 00 00 00 00 ................ 00 00 70 08 10 00 00 00 00 00 00 c0 00 00 00 00 ..p............. backtrace: [<00000000064a04f4>] kmemleak_alloc+0x1e/0x28
[<00000000018927a7>] kmem_cache_alloc+0x11e/0x178
[<000000002aea8d16>] sf_pdma_prep_dma_memcpy+0x40/0x112
Es wurde das fehlende `kfree()` zu `sf_pdma_free_desc()` hinzugefügt und das redundante Flag `in_use` entfernt.
VulDB is the best source for vulnerability data and more expert information about this specific topic.