patch-2.3.6 linux/arch/i386/mm/ioremap.c
Next file: linux/arch/i386/vmlinux.lds
Previous file: linux/arch/i386/mm/init.c
Back to the patch index
Back to the overall index
- Lines: 35
- Date:
Thu Jun 3 14:17:51 1999
- Orig file:
v2.3.5/linux/arch/i386/mm/ioremap.c
- Orig date:
Fri Nov 27 15:03:14 1998
diff -u --recursive --new-file v2.3.5/linux/arch/i386/mm/ioremap.c linux/arch/i386/mm/ioremap.c
@@ -93,12 +93,17 @@
{
void * addr;
struct vm_struct * area;
- unsigned long offset;
+ unsigned long offset, last_addr;
+
+ /* Don't allow wraparound or zero size */
+ last_addr = phys_addr + size - 1;
+ if (!size || last_addr < phys_addr)
+ return NULL;
/*
* Don't remap the low PCI/ISA area, it's always mapped..
*/
- if (phys_addr >= 0xA0000 && (phys_addr+size) <= 0x100000)
+ if (phys_addr >= 0xA0000 && last_addr < 0x100000)
return phys_to_virt(phys_addr);
/*
@@ -112,13 +117,7 @@
*/
offset = phys_addr & ~PAGE_MASK;
phys_addr &= PAGE_MASK;
- size = PAGE_ALIGN(size + offset);
-
- /*
- * Don't allow mappings that wrap..
- */
- if (!size || size > phys_addr + size)
- return NULL;
+ size = PAGE_ALIGN(last_addr) - phys_addr;
/*
* Ok, go for it..
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)