--- zzzz-none-000/linux-2.4.17/mm/vmalloc.c 2001-12-21 17:42:05.000000000 +0000 +++ sangam-fb-322/linux-2.4.17/mm/vmalloc.c 2004-11-24 13:22:34.000000000 +0000 @@ -201,7 +201,11 @@ return NULL; } -void vfree(void * addr) +#if defined (CONFIG_AVM_MEM_MONITORING) +static void vfree0 (void * addr) +#else /*--- #if defined (CONFIG_AVM_MEM_MONITORING) ---*/ +void vfree (void * addr) +#endif /*--- #else ---*/ /*--- #if defined (CONFIG_AVM_MEM_MONITORING) ---*/ { struct vm_struct **p, *tmp; @@ -225,6 +229,38 @@ printk(KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n", addr); } +#if defined (CONFIG_AVM_MEM_MONITORING) +void vfree (void * addr) +{ + addr = kmem_free_notify (addr, 'V'); + vfree0 (addr); +} + +void * __vmalloc (unsigned long size, int gfp_mask, pgprot_t prot, const char * file) +{ + void * addr; + struct vm_struct * area; + unsigned long size0 = size; + + size = PAGE_ALIGN(sizeof (struct kmhead) + size); + if (!size || (size >> PAGE_SHIFT) > num_physpages) { + BUG(); + return NULL; + } + area = get_vm_area (size, VM_ALLOC); + if (!area) + return NULL; + addr = area->addr; + if (vmalloc_area_pages (VMALLOC_VMADDR(addr), size, gfp_mask, prot)) { + vfree0 (addr); + return NULL; + } + addr = kmem_alloc_notify (addr, size0, file, 'V'); + return addr; +} + +#else /*--- #if defined (CONFIG_AVM_MEM_MONITORING) ---*/ + void * __vmalloc (unsigned long size, int gfp_mask, pgprot_t prot) { void * addr; @@ -245,6 +281,7 @@ } return addr; } +#endif /*--- #else ---*/ /*--- #if defined (CONFIG_AVM_MEM_MONITORING) ---*/ long vread(char *buf, char *addr, unsigned long count) {