sparc64 has a module_map() modelled on vmalloc(), but using a separate
modvmlist of areas.  After allocating an area, if the call to allocate
the pages and map them in fails, it needs to free that area: which at
present it's trying to do by calling vfree() - but that searches vmlist
not modvmlist.  It should be calling its own module_unmap() instead.
Patch below against 2.4.2-ac28 or 2.4.3-pre8.

Hugh

--- 2.4.2-ac28/arch/sparc64/mm/modutil.c        Mon Feb 19 03:49:54 2001
+++ linux/arch/sparc64/mm/modutil.c     Wed Mar 28 14:31:49 2001
@@ -59,7 +59,7 @@
        *p = area;
 
        if (vmalloc_area_pages(VMALLOC_VMADDR(addr), size, GFP_KERNEL, PAGE_KERNEL)) {
-               vfree(addr);
+               module_unmap(addr);
                return NULL;
        }
        return addr;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to