From 509c0b22d53a8d51e0f9a789dcd52c9ee002195a Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 21 Jun 2010 21:48:02 +0000 Subject: [PATCH] Radeon_PrepareDMA(): Fail when encountering physical addresses > 4 GB. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37214 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/drivers/graphics/radeon/DMA.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/add-ons/kernel/drivers/graphics/radeon/DMA.c b/src/add-ons/kernel/drivers/graphics/radeon/DMA.c index 6a423755ea..429e072fd2 100644 --- a/src/add-ons/kernel/drivers/graphics/radeon/DMA.c +++ b/src/add-ons/kernel/drivers/graphics/radeon/DMA.c @@ -88,6 +88,15 @@ static status_t Radeon_PrepareDMA( if( contig_size == 0 ) break; +#if B_HAIKU_PHYSICAL_BITS > 32 + if (address + contig_size > (phys_addr_t)1 << 32) { + SHOW_ERROR(2, "Physical address > 4 GB: %#" B_PRIxPHYSADDR + "size: %#" B_PRIxSIZE, address, size); + res = B_BAD_VALUE; + goto err; + } +#endif + target += contig_size; while( contig_size > 0 ) {