patch-2.4.5 linux/mm/vmalloc.c
Next file: linux/mm/vmscan.c
Previous file: linux/mm/swapfile.c
Back to the patch index
Back to the overall index
- Lines: 37
- Date:
Tue May 22 19:54:04 2001
- Orig file:
v2.4.4/linux/mm/vmalloc.c
- Orig date:
Fri Mar 23 16:14:00 2001
diff -u --recursive --new-file v2.4.4/linux/mm/vmalloc.c linux/mm/vmalloc.c
@@ -180,19 +180,13 @@
addr = VMALLOC_START;
write_lock(&vmlist_lock);
for (p = &vmlist; (tmp = *p) ; p = &tmp->next) {
- if ((size + addr) < addr) {
- write_unlock(&vmlist_lock);
- kfree(area);
- return NULL;
- }
- if (size + addr < (unsigned long) tmp->addr)
+ if ((size + addr) < addr)
+ goto out;
+ if (size + addr <= (unsigned long) tmp->addr)
break;
addr = tmp->size + (unsigned long) tmp->addr;
- if (addr > VMALLOC_END-size) {
- write_unlock(&vmlist_lock);
- kfree(area);
- return NULL;
- }
+ if (addr > VMALLOC_END-size)
+ goto out;
}
area->flags = flags;
area->addr = (void *)addr;
@@ -201,6 +195,11 @@
*p = area;
write_unlock(&vmlist_lock);
return area;
+
+out:
+ write_unlock(&vmlist_lock);
+ kfree(area);
+ return NULL;
}
void vfree(void * addr)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)