On Fri, Feb 19, 2016 at 02:50:52PM +0100, Michal Nazarewicz wrote:
> I haven’t looked closely at the code, but why not:
>
> struct cma *cma =
> if (!cma_release(dev_get_cma_area(dev), page, size >> PAGE_SHIFT)) {
> // ... do whatever other non-CMA free
> }
The page tables changes need to be done before we release the area with
cma_release(). With the v2 patchset which I've sent to LAKML we won't
need a new in_cma() function since we'll now record how we allocated the
buffer and use this information in the free routine.