]> Git Repo - linux.git/blobdiff - drivers/usb/core/buffer.c
Merge tag 'usb-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[linux.git] / drivers / usb / core / buffer.c
index 89f2e7765093955b9bc37b1efcf5013d69f64482..98e39f91723a52ec7cf607dc60f50035e66a569f 100644 (file)
@@ -62,8 +62,9 @@ int hcd_buffer_create(struct usb_hcd *hcd)
        char            name[16];
        int             i, size;
 
-       if (!hcd->self.controller->dma_mask &&
-           !(hcd->driver->flags & HCD_LOCAL_MEM))
+       if (!IS_ENABLED(CONFIG_HAS_DMA) ||
+           (!hcd->self.controller->dma_mask &&
+            !(hcd->driver->flags & HCD_LOCAL_MEM)))
                return 0;
 
        for (i = 0; i < HCD_BUFFER_POOLS; i++) {
@@ -93,6 +94,9 @@ void hcd_buffer_destroy(struct usb_hcd *hcd)
 {
        int i;
 
+       if (!IS_ENABLED(CONFIG_HAS_DMA))
+               return;
+
        for (i = 0; i < HCD_BUFFER_POOLS; i++) {
                struct dma_pool *pool = hcd->pool[i];
 
@@ -118,9 +122,13 @@ void *hcd_buffer_alloc(
        struct usb_hcd          *hcd = bus_to_hcd(bus);
        int                     i;
 
+       if (size == 0)
+               return NULL;
+
        /* some USB hosts just use PIO */
-       if (!bus->controller->dma_mask &&
-           !(hcd->driver->flags & HCD_LOCAL_MEM)) {
+       if (!IS_ENABLED(CONFIG_HAS_DMA) ||
+           (!bus->controller->dma_mask &&
+            !(hcd->driver->flags & HCD_LOCAL_MEM))) {
                *dma = ~(dma_addr_t) 0;
                return kmalloc(size, mem_flags);
        }
@@ -145,8 +153,9 @@ void hcd_buffer_free(
        if (!addr)
                return;
 
-       if (!bus->controller->dma_mask &&
-           !(hcd->driver->flags & HCD_LOCAL_MEM)) {
+       if (!IS_ENABLED(CONFIG_HAS_DMA) ||
+           (!bus->controller->dma_mask &&
+            !(hcd->driver->flags & HCD_LOCAL_MEM))) {
                kfree(addr);
                return;
        }
This page took 0.036064 seconds and 4 git commands to generate.