RE: Why system call need to copy the date from the userspace before using it

David Schwartz
2005-04-14T02:19:12Z

> Catalin Marinas wrote:

> >Tomko <tomko@haha.com> wrote:

> >>Inside the system call , the kernel often copy the data by calling
> >>copy_from_user() rather than just using strcpy(), is it because the
> >>memory mapping in kenel space is different from user space?

> >No, it is because this function checks whether the access to the user
> >space address is OK. There are situations when it can also sleep (page
> >not present).

> what u means "OK"? kernel space should have right to access any memory
> address , can u expained in details what u means "OK"?

Kernel space does have the right to access any memory but user space
doesn't, so the kernel can't just take an address from user space and use
it. Consider:

int i=open("/dev/null", O_RDWR);
write(i, NULL, 4);

Are you seriously suggesting the kernel should just read from address zero
because a user-space program asked it to?

DS