usb: gadget: ci: Avoid null pointer dereference
authorMarek Vasut <marex@denx.de>
Fri, 28 Jan 2022 03:39:09 +0000 (04:39 +0100)
committerMarek Vasut <marex@denx.de>
Fri, 11 Feb 2022 00:30:43 +0000 (01:30 +0100)
The ci_req->hw_buf can be NULL, test whether it is and if so,
avoid accessing it. Else, the system may crash.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Peter Chen <peter.chen@nxp.com>
Cc: Li Jun <jun.li@nxp.com>
Cc: Peng Fan <peng.fan@nxp.com>
drivers/usb/gadget/ci_udc.c

index 226a9e6..542684c 100644 (file)
@@ -402,6 +402,9 @@ align:
 
 flush:
        hwaddr = (unsigned long)ci_req->hw_buf;
+       if (!hwaddr)
+               return 0;
+
        aligned_used_len = roundup(req->length, ARCH_DMA_MINALIGN);
        flush_dcache_range(hwaddr, hwaddr + aligned_used_len);
 
@@ -415,7 +418,7 @@ static void ci_debounce(struct ci_req *ci_req, int in)
        unsigned long hwaddr = (unsigned long)ci_req->hw_buf;
        uint32_t aligned_used_len;
 
-       if (in)
+       if (in || !hwaddr)
                return;
 
        aligned_used_len = roundup(req->actual, ARCH_DMA_MINALIGN);