final decision about *at syscalls

John Baldwin jhb at freebsd.org
Thu Apr 17 13:44:56 UTC 2008


On Wednesday 16 April 2008 12:56:12 pm Pawel Jakub Dawidek wrote:
> On Wed, Apr 16, 2008 at 10:14:40AM -0400, John Baldwin wrote:
> > On Saturday 12 April 2008 07:20:19 am Pawel Jakub Dawidek wrote:
> > > From what you write John, #1 is a better choice than #2. If you want to
> > > avoid races, you can pass already locked vnode. In case of file
> > > descriptors, if p_fd is not locked another thread can close and open
> > > different directory under the same descriptor number.
> >
> > Did you read Robert's paper?  Do you not realize that the kernel copying
> > data in from userland multiple times and having it change in between is
> > very bug prone?
>
> Believe me I'm fully aware of the problems Robert described in his
> paper. With vnode approach where do you have more data copying between
> kernel and userland?

Only because it was explicitly mentioned in the original e-mail:

> CONs of #1
> 
>         o       some very small code duplication (the translation is done in every 
>                 kern_fooat() function)
>         o       there is a race between the name translation and the actual use of the result
>                 of the translation that needs to be handled, the "path_to_file" string is copied
>                 to the kernel space twice hence a race

-- 
John Baldwin


More information about the freebsd-arch mailing list