* [PATCH v2] ioatdma: fix overflow of u16 in ring_reshape
@ 2015-08-05 14:55 Allen Hubbe
2015-08-05 20:03 ` Dan Williams
0 siblings, 1 reply; 2+ messages in thread
From: Allen Hubbe @ 2015-08-05 14:55 UTC (permalink / raw)
To: Dan Williams, Dave Jiang; +Cc: dmaengine, linux-kernel, Allen Hubbe
If the allocation order is 16, then the u16 index will overflow and wrap
to zero instead of being equal or greater than 1 << 16. The loop
condition will always be true, and the loop will run until all the
memory resources are depleted.
Change the type of index 'i' to u32, 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>
---
Version Two: rebased the fix on top of Dave Jiang's work.
drivers/dma/ioat/dma.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
index a5630966834e..7435585dbbd6 100644
--- a/drivers/dma/ioat/dma.c
+++ b/drivers/dma/ioat/dma.c
@@ -372,7 +372,7 @@ static bool reshape_ring(struct ioatdma_chan *ioat_chan, int order)
const u16 active = ioat_ring_active(ioat_chan);
const u32 new_size = 1 << order;
struct ioat_ring_ent **ring;
- u16 i;
+ u32 i;
if (order > ioat_get_max_alloc_order())
return false;
--
2.5.0.rc1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH v2] ioatdma: fix overflow of u16 in ring_reshape
2015-08-05 14:55 [PATCH v2] ioatdma: fix overflow of u16 in ring_reshape Allen Hubbe
@ 2015-08-05 20:03 ` Dan Williams
0 siblings, 0 replies; 2+ messages in thread
From: Dan Williams @ 2015-08-05 20:03 UTC (permalink / raw)
To: Allen Hubbe; +Cc: Dave Jiang, dmaengine, linux-kernel
On Wed, Aug 5, 2015 at 7:55 AM, Allen Hubbe <Allen.Hubbe@emc.com> wrote:
> If the allocation order is 16, then the u16 index will overflow and wrap
> to zero instead of being equal or greater than 1 << 16. The loop
> condition will always be true, and the loop will run until all the
> memory resources are depleted.
>
> Change the type of index 'i' to u32, 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>
> ---
>
> Version Two: rebased the fix on top of Dave Jiang's work.
>
Hmm, I think we should instead limit the max order to 15 instead
because there are other usages of u16 throughout the driver. In fact
I thought that was already enforced, but seems I'm mistaken.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2015-08-05 20:03 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-05 14:55 [PATCH v2] ioatdma: fix overflow of u16 in ring_reshape Allen Hubbe
2015-08-05 20:03 ` Dan Williams
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®