On Tuesday 15 July 2014 13:12:37 Tobias Klauser wrote: > On 2014-07-15 at 12:24:46 +0200, Arnd Bergmann <arnd@xxxxxxxx> wrote: > > On Tuesday 15 July 2014 16:45:51 Ley Foon Tan wrote: > > > +void *module_alloc(unsigned long size) > > > +{ > > > + if (size == 0) > > > + return NULL; > > > + return kmalloc(size, GFP_KERNEL); > > > +} > > > + > > > +/* Free memory returned from module_alloc */ > > > +void module_free(struct module *mod, void *module_region) > > > +{ > > > + kfree(module_region); > > > +} > > > > Any particular reason for defining these to use kmalloc rather than > > the default vmalloc based functions? > > AFAIR this is due to relocation issues, as the FIXME comment in the > "original" code [1] states. I don't know whether this still applies, > though (or what would be the proper fix for this to overcome the > relocation issues). > > [1] https://github.com/tklauser/linux-nios2/blob/nios2/arch/nios2/kernel/module.c#L45 > Ah, I see. Please at least copy over that comment then. A long-term solution would be to copy what ARM does, since that has the same problem. The modules are allocated with __vmalloc_node_range, passing a virtual address range that is just before the kernel virtual address, taken out of the top 16MB of the user space addresses. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html