aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/buffer.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-04-18 11:00:39 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2009-04-23 14:15:28 -0700
commita8aa401f38cfb5fa26e970b48e93fb851d68fe64 (patch)
tree99f5572d635b55af91f04bff94ce901a022ed09e /drivers/usb/core/buffer.c
parentUSB: g_file_storage: fix use-after-free bug when closing files (diff)
downloadlinux-dev-a8aa401f38cfb5fa26e970b48e93fb851d68fe64.tar.xz
linux-dev-a8aa401f38cfb5fa26e970b48e93fb851d68fe64.zip
USB: pass mem_flags to dma_alloc_coherent
When I want to use my webcam, I get: vvvvvvv cheese: page allocation failure. order:5, mode:0x8004 Pid: 8100, comm: cheese Not tainted 2.6.30-rc2-wl-dirty #102 Call Trace: [<ffffffff802c5d8e>] __alloc_pages_internal+0x3fe/0x520 [<ffffffff80210a20>] dma_generic_alloc_coherent+0x90/0x120 [<ffffffffa001c91e>] hcd_buffer_alloc+0xee/0x130 [usbcore] [<ffffffffa000d52d>] usb_buffer_alloc+0x2d/0x40 [usbcore] [<ffffffffa0160e14>] uvc_alloc_urb_buffers+0x84/0x140 [uvcvideo] [<ffffffffa0160ff6>] uvc_init_video+0x126/0x400 [uvcvideo] [...] Oddly, I remembered fixing this and putting in __GFP_NOWARN because uvcvideo retries a smaller allocation. However, the allocation function doesn't pass the gfp flags through to dma_alloc_coherent so we still get the warning! Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/buffer.c')
-rw-r--r--drivers/usb/core/buffer.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/core/buffer.c b/drivers/usb/core/buffer.c
index cadb2dc1d28a..3ba2fff71490 100644
--- a/drivers/usb/core/buffer.c
+++ b/drivers/usb/core/buffer.c
@@ -119,7 +119,7 @@ void *hcd_buffer_alloc(
if (size <= pool_max [i])
return dma_pool_alloc(hcd->pool [i], mem_flags, dma);
}
- return dma_alloc_coherent(hcd->self.controller, size, dma, 0);
+ return dma_alloc_coherent(hcd->self.controller, size, dma, mem_flags);
}
void hcd_buffer_free(