[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <47F638FD.76E4.0078.0@novell.com>
Date: Fri, 04 Apr 2008 13:19:41 +0100
From: "Jan Beulich" <jbeulich@...ell.com>
To: "Linus Torvalds" <torvalds@...ux-foundation.org>
Cc: "Ingo Molnar" <mingo@...e.hu>, <hpa@...nel.org>,
<tglx@...utronix.de>, <linux-kernel@...r.kernel.org>
Subject: [PATCH] i386: additional fix for making ioremap() accept
64-bit addresses
The recent change to __ioremap()'s first parameter's type didn't yield
the intended effect as the first conditional inside the function would
still have filtered out any addresses with bits [63:32] set. Correct
last_addr's type and at once also add a check that the address range
doesn't extend into space hardware cannot support even theoretically.
Signed-off-by: Jan Beulich <jbeulich@...ell.com>
Cc: H. Peter Anvin <hpa@...nel.org>
Cc: Stefan Richter <stefanr@...6.in-berlin.de>
Cc: Ingo Molnar <mingo@...e.hu>
Cc: Thomas Gleixner <tglx@...utronix.de>
---
arch/x86/mm/ioremap.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
--- linux-2.6.25-rc8/arch/x86/mm/ioremap.c 2008-04-02 16:21:19.000000000 +0200
+++ 2.6.25-rc8-i386-ioremap-64bit/arch/x86/mm/ioremap.c 2008-04-02 15:21:42.000000000 +0200
@@ -109,13 +109,14 @@ static int ioremap_change_attr(unsigned
static void __iomem *__ioremap(resource_size_t phys_addr, unsigned long size,
enum ioremap_mode mode)
{
- unsigned long pfn, offset, last_addr, vaddr;
+ unsigned long pfn, offset, vaddr;
+ resource_size_t last_addr;
struct vm_struct *area;
pgprot_t prot;
/* Don't allow wraparound or zero size */
last_addr = phys_addr + size - 1;
- if (!size || last_addr < phys_addr)
+ if (!size || last_addr < phys_addr || last_addr > __PHYSICAL_MASK)
return NULL;
/*
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists