Yes. sys_create_module returns the address at which the module
should be relocated; sys_init_module copies the now-relocated
bits into kernel memory.
The only other option would be doing PIC bits as in ELF shared
libraries. Since there is no issue of sharing code between multiple
kernels, there is no need for that complication. ;-)
r~