usb: gadget: bdc: fix memory leak
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Sat, 26 Sep 2015 09:31:06 +0000 (15:01 +0530)
committerFelipe Balbi <balbi@ti.com>
Wed, 30 Sep 2015 16:20:21 +0000 (11:20 -0500)
If dma_pool_alloc() fails we are jumping to fail and releasing all the
bd_tables which have been added to the chain but we missed freeing this
bd_table which was just allocated and still not added to the chain of
bd_table.

Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/udc/bdc/bdc_ep.c

index d1b81539d6320b3baed7c5bc9bc4cdde7440aee9..d6199507f86140b15439463f97f234aa7955d6fe 100644 (file)
@@ -159,8 +159,10 @@ static int ep_bd_list_alloc(struct bdc_ep *ep)
                bd_table->start_bd = dma_pool_alloc(bdc->bd_table_pool,
                                                        GFP_ATOMIC,
                                                        &dma);
-               if (!bd_table->start_bd)
+               if (!bd_table->start_bd) {
+                       kfree(bd_table);
                        goto fail;
+               }
 
                bd_table->dma = dma;