> diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c > index 0007b79..b95934b 100644 > --- a/drivers/dma-buf/dma-buf.c > +++ b/drivers/dma-buf/dma-buf.c > @@ -37,6 +37,9 @@ > > #include <uapi/linux/dma-buf.h> > > +/* Prevent the highmem.h macro from aliasing ops->kunmap_atomic */ > +#undef kunmap_atomic > + > static inline int is_dma_buf_file(struct file *); > > struct dma_buf_list { I think the right fix here is to rename the operation to unmap_atomic and send out a little patch for that ASAP. > + * Flags can be any of: > + * * SG_KMAP - Use kmap to create the mapping > + * * SG_KMAP_ATOMIC - Use kmap_atomic to map the page atommically. > + * Thus, the rules of that function apply: the cpu > + * may not sleep until it is unmaped. > + * > + * Also, consider carefully whether this function is appropriate. It is > + * largely not recommended for new code and if the sgl came from another > + * subsystem and you don't know what kind of memory might be in the list > + * then you definitely should not call it. Non-mappable memory may be in > + * the sgl and thus this function may fail unexpectedly. > + **/ > +static inline void *sg_map_offset(struct scatterlist *sg, size_t offset, > + int flags) I'd rather have separate functions for kmap vs kmap_atomic instead of the flags parameter. And while you're at it just always pass the 0 offset parameter instead of adding a wrapper.. Otherwise this looks good to me.