In the Linux kernel, the following vulnerability has been resolved:
usb: cdns3: fix random warning message when driver load
Warning log: [ 4.141392] Unexpected gfp: 0x4 (GFPDMA32). Fixing up to gfp: 0xa20 (GFPATOMIC). Fix your code! [ 4.150340] CPU: 1 PID: 175 Comm: 1-0050 Not tainted 5.15.5-00039-g2fd9ae1b568c #20 [ 4.158010] Hardware name: Freescale i.MX8QXP MEK (DT) [ 4.163155] Call trace: [ 4.165600] dumpbacktrace+0x0/0x1b0 [ 4.169286] showstack+0x18/0x68 [ 4.172611] dumpstacklvl+0x68/0x84 [ 4.176286] dumpstack+0x18/0x34 [ 4.179613] kmallocfixflags+0x60/0x88 [ 4.183550] newslab+0x334/0x370 [ 4.186878] _slaballoc.part.108+0x4d4/0x748 [ 4.191419] _slaballoc.isra.109+0x30/0x78 [ 4.195702] kmemcachealloc+0x40c/0x420 [ 4.199725] dmapoolalloc+0xac/0x1f8 [ 4.203486] cdns3allocatetrbpool+0xb4/0xd0
poolallocpage(struct dmapool *pool, gfpt memflags) { ... page = kmalloc(sizeof(*page), memflags); page->vaddr = dmaalloccoherent(pool->dev, pool->allocation, &page->dma, mem_flags); ... }
kmalloc was called with memflags, which is passed down in cdns3allocatetrbpool() and have GFPDMA32 flags. kmallfix_flags() report warning.
GFPDMA32 is not useful at all. dmaalloccoherent() will handle DMA memory region correctly by pool->dev. GFPDMA32 can be removed safely.