On Sun, Oct 11, 2020 at 02:37:33PM -0400, Willem de Bruijn wrote: > Slightly off-topic, but I don't fully fathom what goes on with this > pointer straight after the initial kmalloc. > > lp->td_ring = (struct dma_desc *)KSEG1ADDR(lp->td_ring);
KSEG1ADDR should rewrite the memory address into the uncached region for memory mapped I/O. Not sure if this would case problems for kfree since there is another kfree on the fail path: probe_err_register: kfree(lp->td_ring); -- Valentin