How do you ensure that no device can do DMA on the buffer while it's mapped into user space in a noncoherent manner?
Why do we want to enforce that ? We provide the appropriate base service but you need to know what you are doing. In reality a lot of use cases are going to need far more than a simple kernel API could try and guess coherency rules about.