The syscall for execution is execve and the call signature for that is int execve(const char filename, char const argv[], char *const envp[]);
The filename argument is passed to a getname() function, which copies the string from user space to kernel space and does some usage tracking things. It returns a filename struct, which is defined in include/linux/fs.h. It stores a pointer to the original string in user space as well as a new pointer to the value copied to kernel space: