]>
Commit | Line | Data |
---|---|---|
84627dc8 | 1 | diffstat:= |
2 | arch/i386/mm/ioremap.c | 9 ++++++--- | |
3 | 1 files changed, 6 insertions(+), 3 deletions(-) | |
4 | ||
5 | diff -Naurp ./arch/i386/mm/ioremap.c~ioremap-wrap ./arch/i386/mm/ioremap.c | |
6 | --- ./arch/i386/mm/ioremap.c~ioremap-wrap 2003-10-25 11:43:13.000000000 -0700 | |
7 | +++ ./arch/i386/mm/ioremap.c 2003-10-31 11:27:32.000000000 -0800 | |
8 | @@ -191,15 +191,18 @@ void * __ioremap(unsigned long phys_addr | |
9 | void *ioremap_nocache (unsigned long phys_addr, unsigned long size) | |
10 | { | |
11 | void *p = __ioremap(phys_addr, size, _PAGE_PCD); | |
12 | + unsigned long next_addr; | |
13 | + | |
14 | if (!p) | |
15 | return p; | |
16 | ||
17 | - if (phys_addr + size < virt_to_phys(high_memory)) { | |
18 | + next_addr = phys_addr + size; | |
19 | + if (next_addr != 0 && next_addr < virt_to_phys(high_memory)) { | |
20 | struct page *ppage = virt_to_page(__va(phys_addr)); | |
21 | unsigned long npages = (size + PAGE_SIZE - 1) >> PAGE_SHIFT; | |
22 | ||
23 | - BUG_ON(phys_addr+size > (unsigned long)high_memory); | |
24 | - BUG_ON(phys_addr + size < phys_addr); | |
25 | + BUG_ON(next_addr > (unsigned long)high_memory); | |
26 | + BUG_ON(next_addr < phys_addr); | |
27 | ||
28 | if (change_page_attr(ppage, npages, PAGE_KERNEL_NOCACHE) < 0) { | |
29 | iounmap(p); |