| From 025f880cb2e4d7218d0422d4b07bea1a68959c38 Mon Sep 17 00:00:00 2001 |
| From: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Date: Mon, 17 Jun 2013 09:56:33 -0700 |
| Subject: xhci: check for failed dma pool allocation |
| |
| From: Mathias Nyman <mathias.nyman@linux.intel.com> |
| |
| commit 025f880cb2e4d7218d0422d4b07bea1a68959c38 upstream. |
| |
| Fail and free the container context in case dma_pool_alloc() can't allocate |
| the raw context data part of it |
| |
| This patch should be backported to kernels as old as 2.6.31, that |
| contain the commit d115b04818e57bdbc7ccde4d0660b15e33013dc8 "USB: xhci: |
| Support for 64-byte contexts". |
| |
| Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Cc: John Youn <johnyoun@synopsys.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/xhci-mem.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/usb/host/xhci-mem.c |
| +++ b/drivers/usb/host/xhci-mem.c |
| @@ -369,6 +369,10 @@ static struct xhci_container_ctx *xhci_a |
| ctx->size += CTX_SIZE(xhci->hcc_params); |
| |
| ctx->bytes = dma_pool_alloc(xhci->device_pool, flags, &ctx->dma); |
| + if (!ctx->bytes) { |
| + kfree(ctx); |
| + return NULL; |
| + } |
| memset(ctx->bytes, 0, ctx->size); |
| return ctx; |
| } |