From 528c511aabaefcafc01361c8038766ce56fe8e45 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 31 May 2005 18:36:28 +0000 Subject: [PATCH] windows-more-races-20050531 a couple of more locations at which cm_SyncOpDone() either was not called or was called without holding the scache mutex. --- src/WINNT/afsd/cm_dcache.c | 1 + src/WINNT/afsd/cm_vnodeops.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/WINNT/afsd/cm_dcache.c b/src/WINNT/afsd/cm_dcache.c index d5d7c70a7..cd7d1c0df 100644 --- a/src/WINNT/afsd/cm_dcache.c +++ b/src/WINNT/afsd/cm_dcache.c @@ -670,6 +670,7 @@ long cm_SetupStoreBIOD(cm_scache_t *scp, osi_hyper_t *inOffsetp, long inSize, osi_assertx(!(bufp->flags & CM_BUF_WRITING), "WRITING w/o CMSTORING in SetupStoreBIOD"); bufp->flags |= CM_BUF_WRITING; + cm_SyncOpDone(scp, bufp, flags); break; } diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index 2cfcf8cb3..555023aec 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -2599,8 +2599,10 @@ long cm_Rename(cm_scache_t *oldDscp, char *oldNamep, cm_scache_t *newDscp, lock_ReleaseMutex(&newDscp->mx); if (code) { /* cleanup first one */ + lock_ObtainMutex(&newDscp->mx); cm_SyncOpDone(oldDscp, NULL, CM_SCACHESYNC_STOREDATA); + lock_ReleaseMutex(&oldDscp->mx); } } } @@ -2619,8 +2621,10 @@ long cm_Rename(cm_scache_t *oldDscp, char *oldNamep, cm_scache_t *newDscp, lock_ReleaseMutex(&oldDscp->mx); if (code) { /* cleanup first one */ + lock_ObtainMutex(&newDscp->mx); cm_SyncOpDone(newDscp, NULL, CM_SCACHESYNC_STOREDATA); + lock_ReleaseMutex(&newDscp->mx); } } } -- 2.39.5