From my understanding, functionality of mmap() cannot be used from the kernel space.
While one may successfully call do_mmap() or similar, the function returns user space address, which kernel cannot use directly. The only correct way for access user space memory from the kernel is copy_to_user/copy_from_user. But using these functions implies copiing, so advantage of mmap() (compared to read()) is lost.
For use functionality of read() in the kernel, set_fs(KERNEL_DS) technique can be used for mask pointer to kernel space, passed to this function, as a pointer to user space, so copy_to_user works correctly.
But with mmap() one has reversed problem: he needs to work with user space pointer, returned from the function, as with a pointer to kernel space. And this cannot be done with normal means.
Attempt to dereference a pointer to user space region which hasn't mapped yet may crash the kernel. And most of mmap() implementations actually returns not-mapped memory, which is intended to be mapped on the first page fault.
vfs_readis indeed an alternative, but anmmap'edfile would work better with my existing code and I could avoid copying some memory.