Просмотр исходного кода

usb: gadget: bdc: fix memory leak

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>
Sudip Mukherjee 10 лет назад
Родитель
Сommit
7022cfdfe0
1 измененных файлов с 3 добавлено и 1 удалено
  1. 3 1
      drivers/usb/gadget/udc/bdc/bdc_ep.c

+ 3 - 1
drivers/usb/gadget/udc/bdc/bdc_ep.c

@@ -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;