dmaengine: ioatdma: fix u16 overflow in cleanup
authorAllen Hubbe <Allen.Hubbe@emc.com>
Tue, 11 Aug 2015 08:05:43 +0000 (04:05 -0400)
committerVinod Koul <vinod.koul@intel.com>
Mon, 17 Aug 2015 08:05:58 +0000 (13:35 +0530)
If the allocation order is 16, then the u16 count will overflow and wrap
to zero when assigned the value 1 << 16.

Change the type of 'total_descs' to int, so that it is large enough to
store a value equal or greater than 1 << 16.

Signed-off-by: Allen Hubbe <Allen.Hubbe@emc.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/ioat/dma_v2.c

index 13fbd9d5b5b92039df977c3495fda1e755ab7cd3..0fba93c2feb4ac247d42fb05ac82094c0924663d 100644 (file)
@@ -798,7 +798,7 @@ void ioat2_free_chan_resources(struct dma_chan *c)
        struct ioat_chan_common *chan = &ioat->base;
        struct ioatdma_device *device = chan->device;
        struct ioat_ring_ent *desc;
-       const u16 total_descs = 1 << ioat->alloc_order;
+       const int total_descs = 1 << ioat->alloc_order;
        int descs;
        int i;