I would guess that it does so into the memory of the process from which the system call is made. However, if so, how do the rest of the processes use that space? How does the kernel know that the buffer points to a virtual address space, and not a real one? But then that would be like eating up space meant for the process for some general purpose kernel stuff, wouldn't it?
vmalloc is a kernel allocator, it doesn’t (necessarily) relate to processes. The kernel also sees virtual memory, not linear memory, most of the time. The particularity of
vmalloc is that it only allocates contiguous virtual memory, not physical memory;
kmalloc allocates contiguous virtual and physical memory. Both return virtual addresses.
kmalloc, has to allocate new page table entries (
kmalloc allocates from a pre-mapped area); they are mapped in the shared part of the page table tree, or when KPTI is enabled, in the kernel-private part of the tree.
See Linux Device Drivers chapter 8 for details.