Btw, I think we also need to use this nonblocking version from dma_free_contiguous. dma_free* is defined to not block. In practice callers mostly care if they also did GFP_ATOMIC allocations, which don't dip into CMA, but I think we do have a problem.