aboutsummaryrefslogtreecommitdiffstats
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
parentefcc28981745bc6aca88acb2d4d37d87f090a80a (diff)
downloadkernel_samsung_smdk4412-485680050166dc8c6ac976346430ab1f453c228b.zip
kernel_samsung_smdk4412-485680050166dc8c6ac976346430ab1f453c228b.tar.gz
kernel_samsung_smdk4412-485680050166dc8c6ac976346430ab1f453c228b.tar.bz2
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>
-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 464fad5..2ec1ed5 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;
}