summaryrefslogtreecommitdiffstats
path: root/drivers/dma/timb_dma.c
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2010-05-27 14:33:17 +0200
committerDan Williams <dan.j.williams@intel.com>2010-07-01 02:27:35 -0700
commit485680050166dc8c6ac976346430ab1f453c228b (patch)
treeee1400398cb1f88dcb975715e16dfa525db9cecf /drivers/dma/timb_dma.c
parentefcc28981745bc6aca88acb2d4d37d87f090a80a (diff)
downloadlinux-485680050166dc8c6ac976346430ab1f453c228b.tar.gz
linux-485680050166dc8c6ac976346430ab1f453c228b.tar.bz2
linux-485680050166dc8c6ac976346430ab1f453c228b.zip
drivers/dma: Eliminate a NULL pointer dereference
If td_desc is NULL, just skip both kfrees. A simplified version of the semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ expression E,E1; identifier f; statement S1,S2,S3; @@ if ((E == NULL && ...) || ...) { ... when != if (...) S1 else S2 when != E = E1 * E->f ... when any return ...; } else S3 // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/timb_dma.c')
-rw-r--r--drivers/dma/timb_dma.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/dma/timb_dma.c b/drivers/dma/timb_dma.c
index 464fad58dae9..2ec1ed56f204 100644
--- a/drivers/dma/timb_dma.c
+++ b/drivers/dma/timb_dma.c
@@ -382,7 +382,7 @@ static struct timb_dma_desc *td_alloc_init_desc(struct timb_dma_chan *td_chan)
td_desc = kzalloc(sizeof(struct timb_dma_desc), GFP_KERNEL);
if (!td_desc) {
dev_err(chan2dev(chan), "Failed to alloc descriptor\n");
- goto err;
+ goto out;
}
td_desc->desc_list_len = td_chan->desc_elems * TIMB_DMA_DESC_SIZE;
@@ -410,7 +410,7 @@ static struct timb_dma_desc *td_alloc_init_desc(struct timb_dma_chan *td_chan)
err:
kfree(td_desc->desc_list);
kfree(td_desc);
-
+out:
return NULL;
}