lkml.org 
[lkml]   [2023]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 6.2 14/64] staging: emxx_udc: Add checks for dma_alloc_coherent()
    Date
    From: Yuan Can <yuancan@huawei.com>

    [ Upstream commit f6510a93cfd8c6c79b4dda0f2967cdc6df42eff4 ]

    As the dma_alloc_coherent may return NULL, the return value needs to be
    checked to avoid NULL poineter dereference.

    Signed-off-by: Yuan Can <yuancan@huawei.com>
    Reviewed-by: Simon Horman <horms@verge.net.au>
    Link: https://lore.kernel.org/r/20230119083119.16956-1-yuancan@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/staging/emxx_udc/emxx_udc.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/staging/emxx_udc/emxx_udc.c b/drivers/staging/emxx_udc/emxx_udc.c
    index b4e19174bef2e..f9765841c4aa3 100644
    --- a/drivers/staging/emxx_udc/emxx_udc.c
    +++ b/drivers/staging/emxx_udc/emxx_udc.c
    @@ -2587,10 +2587,15 @@ static int nbu2ss_ep_queue(struct usb_ep *_ep,
    req->unaligned = false;

    if (req->unaligned) {
    - if (!ep->virt_buf)
    + if (!ep->virt_buf) {
    ep->virt_buf = dma_alloc_coherent(udc->dev, PAGE_SIZE,
    &ep->phys_buf,
    GFP_ATOMIC | GFP_DMA);
    + if (!ep->virt_buf) {
    + spin_unlock_irqrestore(&udc->lock, flags);
    + return -ENOMEM;
    + }
    + }
    if (ep->epnum > 0) {
    if (ep->direct == USB_DIR_IN)
    memcpy(ep->virt_buf, req->req.buf,
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-03-27 00:43    [W:4.116 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site