Hi, as discussed, I have implemented a kfree() without virt_to_page(). The patch is a proof-of-concept, intended for developers. - the kmalloc caches remained at power-of-two, i.e. the patch wastes lots of memory. - alloc_threadinfo() assumed that kmalloc(8192) returned 8192 byte aligned memory. This was never guaranteed. I have replaced the kmalloc call with gfp() on i386. Probably all other archs are broken. - get_colourspace() is incorrect, a bounds check is missing (the last object must never start beyond addr+PAGE_SIZE+sizeof(kmem_pagehdr)). The patch boots on i386 with debugging enabled, I have not performed any other tests. Btw, it might be possible to combine the kmem_pagehdr implementation and virt_to_page(): If the obj pointer is PAGE_SIZE-aligned, then use virt_to_page(). Otherwise use kmem_pagehdr. -- Manfred