Re: vmalloc/module_alloc: unable to handle two memory regions

Andrew Morton (akpm@digeo.com)
Fri, 31 Jan 2003 13:04:32 -0800


Russell King <rmk@arm.linux.org.uk> wrote:
>
> On Fri, Jan 31, 2003 at 02:48:20AM -0800, Andrew Morton wrote:
> > Boggle.
> >
> > Isn't this totally abusing get_vma_area?
> >
> > What stops an ioremap region from landing in module space?
>
> Exactly the problem.
>
> What's more is that fs/proc/kcore.c:get_kcore_size() also breaks, so
> this isn't an acceptable solution. get_kcore_size wants the module
> region to be above PAGE_OFFSET.
>
> In order to place the module in the normal vmalloc space, we end up with
> a chicken and egg problem - we need to scan the module from kernel space
> to find out how large to make the jump table, but we can't because the
> module hasn't been loaded into kernel memory - this is the reason why it
> was suggested to go down this route.
>

Well, could you not do something like:

+----------------------------+ 4GB
devices
+----------------------------+ VMALLOC_END = 0xc2000000
vmalloc/ioremap
+----------------------------+ 0xc1000000 + sizeof(linux)
kernel direct-mapped ram
+----------------------------+ 0xc1000000
module
+----------------------------+ TASK_SIZE = MODULE_START = PAGE_OFFSET =
VMALLOC_START = 0xc0000000
user space
+----------------------------+

And then arrange for a (start=0xc1000000,len=sizeof(linux)) entry which
describes the kernel itself to be added to the vmlist before anything else?

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