]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - mm/dmapool.c
dmapool: Validate parameters to dma_pool_create
[mirror_ubuntu-zesty-kernel.git] / mm / dmapool.c
index b5ff9ce8765b9d4b375778b428c8fe557d984282..744d541df866b9eb305d5e8aec429c1604d01482 100644 (file)
@@ -106,17 +106,18 @@ struct dma_pool *dma_pool_create(const char *name, struct device *dev,
 {
        struct dma_pool *retval;
 
-       if (align == 0)
+       if (align == 0) {
                align = 1;
-       if (size == 0)
+       } else if (align & (align - 1)) {
                return NULL;
-       else if (size < align)
-               size = align;
-       else if ((size % align) != 0) {
-               size += align + 1;
-               size &= ~(align - 1);
        }
 
+       if (size == 0)
+               return NULL;
+
+       if ((size % align) != 0)
+               size = ALIGN(size, align);
+
        if (allocation == 0) {
                if (PAGE_SIZE < size)
                        allocation = size;