usb: gadget: mv_u3d_core: fix memory leaks
authorValentin Ilie <valentin.ilie@gmail.com>
Sat, 21 Sep 2013 09:30:15 +0000 (12:30 +0300)
committerFelipe Balbi <balbi@ti.com>
Tue, 1 Oct 2013 14:31:21 +0000 (09:31 -0500)
When trb_hw is NULL, trb should be free'd before return.

Signed-off-by: Valentin Ilie <valentin.ilie@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/gadget/mv_u3d_core.c

index 561b30efb8ee84de6fc37c33005cdadc6fbcc5ff..4d31177d5d994d512e2fc386228ad5d107554b21 100644 (file)
@@ -310,6 +310,7 @@ static struct mv_u3d_trb *mv_u3d_build_trb_one(struct mv_u3d_req *req,
         */
        trb_hw = dma_pool_alloc(u3d->trb_pool, GFP_ATOMIC, dma);
        if (!trb_hw) {
+               kfree(trb);
                dev_err(u3d->dev,
                        "%s, dma_pool_alloc fail\n", __func__);
                return NULL;
@@ -454,6 +455,7 @@ static int mv_u3d_req_to_trb(struct mv_u3d_req *req)
 
                trb_hw = kcalloc(trb_num, sizeof(*trb_hw), GFP_ATOMIC);
                if (!trb_hw) {
+                       kfree(trb);
                        dev_err(u3d->dev,
                                        "%s, trb_hw alloc fail\n", __func__);
                        return -ENOMEM;