All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/6] dmaengine: rcar-dmac: Fix uninitialized variable usage
@ 2015-01-29 23:59 Laurent Pinchart
  0 siblings, 0 replies; only message in thread
From: Laurent Pinchart @ 2015-01-29 23:59 UTC (permalink / raw)
  To: linux-sh

The desc variable is used uninitialized in the rcar_dmac_desc_get() and
rcar_dmac_xfer_chunk_get() functions if descriptors need to be
allocated. Fix it.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 drivers/dma/sh/rcar-dmac.c | 69 +++++++++++++++++++++-------------------------
 1 file changed, 31 insertions(+), 38 deletions(-)

diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c
index 29dd09ad41ff..8367578bac63 100644
--- a/drivers/dma/sh/rcar-dmac.c
+++ b/drivers/dma/sh/rcar-dmac.c
@@ -549,26 +549,22 @@ static struct rcar_dmac_desc *rcar_dmac_desc_get(struct rcar_dmac_chan *chan)
 
 	spin_lock_irq(&chan->lock);
 
-	do {
-		if (list_empty(&chan->desc.free)) {
-			/*
-			 * No free descriptors, allocate a page worth of them
-			 * and try again, as someone else could race us to get
-			 * the newly allocated descriptors. If the allocation
-			 * fails return an error.
-			 */
-			spin_unlock_irq(&chan->lock);
-			ret = rcar_dmac_desc_alloc(chan, GFP_NOWAIT);
-			if (ret < 0)
-				return NULL;
-			spin_lock_irq(&chan->lock);
-			continue;
-		}
+	while (list_empty(&chan->desc.free)) {
+		/*
+		 * No free descriptors, allocate a page worth of them and try
+		 * again, as someone else could race us to get the newly
+		 * allocated descriptors. If the allocation fails return an
+		 * error.
+		 */
+		spin_unlock_irq(&chan->lock);
+		ret = rcar_dmac_desc_alloc(chan, GFP_NOWAIT);
+		if (ret < 0)
+			return NULL;
+		spin_lock_irq(&chan->lock);
+	}
 
-		desc = list_first_entry(&chan->desc.free, struct rcar_dmac_desc,
-					node);
-		list_del(&desc->node);
-	} while (!desc);
+	desc = list_first_entry(&chan->desc.free, struct rcar_dmac_desc, node);
+	list_del(&desc->node);
 
 	spin_unlock_irq(&chan->lock);
 
@@ -621,26 +617,23 @@ rcar_dmac_xfer_chunk_get(struct rcar_dmac_chan *chan)
 
 	spin_lock_irq(&chan->lock);
 
-	do {
-		if (list_empty(&chan->desc.chunks_free)) {
-			/*
-			 * No free descriptors, allocate a page worth of them
-			 * and try again, as someone else could race us to get
-			 * the newly allocated descriptors. If the allocation
-			 * fails return an error.
-			 */
-			spin_unlock_irq(&chan->lock);
-			ret = rcar_dmac_xfer_chunk_alloc(chan, GFP_NOWAIT);
-			if (ret < 0)
-				return NULL;
-			spin_lock_irq(&chan->lock);
-			continue;
-		}
+	while (list_empty(&chan->desc.chunks_free)) {
+		/*
+		 * No free descriptors, allocate a page worth of them and try
+		 * again, as someone else could race us to get the newly
+		 * allocated descriptors. If the allocation fails return an
+		 * error.
+		 */
+		spin_unlock_irq(&chan->lock);
+		ret = rcar_dmac_xfer_chunk_alloc(chan, GFP_NOWAIT);
+		if (ret < 0)
+			return NULL;
+		spin_lock_irq(&chan->lock);
+	}
 
-		chunk = list_first_entry(&chan->desc.chunks_free,
-					  struct rcar_dmac_xfer_chunk, node);
-		list_del(&chunk->node);
-	} while (!chunk);
+	chunk = list_first_entry(&chan->desc.chunks_free,
+				 struct rcar_dmac_xfer_chunk, node);
+	list_del(&chunk->node);
 
 	spin_unlock_irq(&chan->lock);
 
-- 
2.0.5


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-01-29 23:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-29 23:59 [PATCH v2 1/6] dmaengine: rcar-dmac: Fix uninitialized variable usage Laurent Pinchart

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.