From 43de10c9cb8c3d2924b749cc5a62525efafe2fef Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Tue, 10 Jan 2006 15:04:40 +0000 Subject: [PATCH] STABLE14-remove-vnop-lock-order-20060110 FIXES 25118 finegrained dcache lock order not obeyed (cherry picked from commit 39b23a0dc16f2e26abf3b7df53bfadb98377748d) --- src/afs/VNOPS/afs_vnop_remove.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/afs/VNOPS/afs_vnop_remove.c b/src/afs/VNOPS/afs_vnop_remove.c index 92e344f0c..a9de86702 100644 --- a/src/afs/VNOPS/afs_vnop_remove.c +++ b/src/afs/VNOPS/afs_vnop_remove.c @@ -356,7 +356,13 @@ afs_remove(OSI_VC_ARG(adp), aname, acred) FetchWholeEnchilada(tvc, &treq); #endif ReleaseWriteLock(&tvc->lock); + if (tdc) + ReleaseSharedLock(&tdc->lock); ObtainWriteLock(&adp->lock, 144); + /* Technically I don't think we need this back, but let's hold it + anyway; The "got" reference should actually be sufficient. */ + if (tdc) + ObtainSharedLock(&tdc->lock, 640); } osi_dnlc_remove(adp, aname, tvc); -- 2.39.5