In the Linux kernel, the following vulnerability has been resolved: swiotlb: initialise restricted pool listhead when SWIOTLBDYNAMIC=y Using restricted DMA pools (CONFIGDMARESTRICTEDPOOL=y) in conjunction with dynamic SWIOTLB (CONFIGSWIOTLBDYNAMIC=y) leads to the following crash when initialising the restricted pools at boot-time: | Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008 | Internal error: Oops: 0000000096000005 [#1] PREEMPT SMP | pc : rmemswiotlbdeviceinit+0xfc/0x1ec | lr : rmemswiotlbdeviceinit+0xf0/0x1ec | Call trace: | rmemswiotlbdeviceinit+0xfc/0x1ec | ofreservedmemdeviceinitbyidx+0x18c/0x238 | ofdmaconfigureid+0x31c/0x33c | platformdmaconfigure+0x34/0x80 faddr2line reveals that the crash is in the list validation code: include/linux/list.h:83 include/linux/rculist.h:79 include/linux/rculist.h:106 kernel/dma/swiotlb.c:306 kernel/dma/swiotlb.c:1695 because addmempool() is trying to listaddrcu() to a NULL 'mem->pools'. Fix the crash by initialising the 'mem->pools' listhead in rmemswiotlbdeviceinit() before calling addmem_pool().