aboutsummaryrefslogtreecommitdiff
path: root/share/man/man9/VOP_VPTOCNP.9
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2011-11-19 07:50:49 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2011-11-19 07:50:49 +0000
commitf82360acf23145e78cc79aa66f52061c21d7571a (patch)
tree1868b70ec09f8c33f478a83d707d8badbb7128c7 /share/man/man9/VOP_VPTOCNP.9
parentf82ee01c1cb742ef4715aa55bd846b0ca6d796c2 (diff)
downloadsrc-f82360acf23145e78cc79aa66f52061c21d7571a.tar.gz
src-f82360acf23145e78cc79aa66f52061c21d7571a.zip
Existing VOP_VPTOCNP() interface has a fatal flow that is critical for
nullfs. The problem is that resulting vnode is only required to be held on return from the successfull call to vop, instead of being referenced. Nullfs VOP_INACTIVE() method reclaims the vnode, which in combination with the VOP_VPTOCNP() interface means that the directory vnode returned from VOP_VPTOCNP() is reclaimed in advance, causing vn_fullpath() to error with EBADF or like. Change the interface for VOP_VPTOCNP(), now the dvp must be referenced. Convert all in-tree implementations of VOP_VPTOCNP(), which is trivial, because vhold(9) and vref(9) are similar in the locking prerequisites. Out-of-tree fs implementation of VOP_VPTOCNP(), if any, should have no trouble with the fix. Tested by: pho Reviewed by: mckusick MFC after: 3 weeks (subject of re approval)
Notes
Notes: svn path=/head/; revision=227697
Diffstat (limited to 'share/man/man9/VOP_VPTOCNP.9')
0 files changed, 0 insertions, 0 deletions