> Look up a bit in the code. If bigenough is not true, cnp does not
> get initialized. This could lead to the bogus length -- or rather,
> it would be the cnp that is bogus, not the 'len'.
>
> The question is how to fix it. I think we can safely avoid doing the
> cache_enter so try changing the 'if (doit)' to 'if (doit && bigenough)'.
> I've included the patch below.
...
> In order to accomplish this, the underlying vnode representing each
> directory entry is retrieved and locked. However, there is a special
> case: We *already* have a reference on the directory vnode itself,
> and one of the directory entries, ".", will be the same vnode. Our
> reference vnode, vp is *NOT* locked. In fact, we *can't* lock it
> without creating a potential deadlock situation (at least that is my
> take).
I good bit of detective work...excellent job.
-DG
David Greenman
Co-founder/Principal Architect, The FreeBSD Project - http://www.freebsd.org
Creator of high-performance Internet servers - http://www.terasolutions.com
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message