ARM: S3C24XX: DMA: Use valid index when accessing array
authorRamax Lo <ramaxlo@gmail.com>
Tue, 8 Dec 2009 15:42:41 +0000 (23:42 +0800)
committerBen Dooks <ben-linux@fluff.org>
Tue, 8 Dec 2009 23:09:05 +0000 (23:09 +0000)
The DMA_CH_VALID bit used in the channel index should be masked out before
using it to access the channel array.

Signed-off-by: Ramax Lo <ramaxlo@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
arch/arm/plat-s3c24xx/dma.c

index f65192d5b1d732083311d80756da6052ebed10f0..f0ea7943ac5a0fffca6007393daf2120b3e1bb23 100644 (file)
@@ -1403,11 +1403,13 @@ static struct s3c2410_dma_chan *s3c2410_dma_map_channel(int channel)
                ord = &dma_order->channels[channel];
 
                for (ch = 0; ch < dma_channels; ch++) {
+                       int tmp;
                        if (!is_channel_valid(ord->list[ch]))
                                continue;
 
-                       if (s3c2410_chans[ord->list[ch]].in_use == 0) {
-                               ch = ord->list[ch] & ~DMA_CH_VALID;
+                       tmp = ord->list[ch] & ~DMA_CH_VALID;
+                       if (s3c2410_chans[tmp].in_use == 0) {
+                               ch = tmp;
                                goto found;
                        }
                }