From: Jeffrey Altman Date: Wed, 19 Jun 2013 17:52:51 +0000 (-0400) Subject: Windows: cm_scache flags missing interlocked ops X-Git-Tag: openafs-stable-1_8_0pre1~1114 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=ab4b8629ac273a631ba9db62766a7190e0d0ae21 Windows: cm_scache flags missing interlocked ops A small number of |= operations on the cm_scache.flags field were not converted to _InterlockedOr. Do so now. Change-Id: Iebd361d53e46527bf3ffa0d20d006a5e90ab4967 Reviewed-on: http://gerrit.openafs.org/9993 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/cm_scache.c b/src/WINNT/afsd/cm_scache.c index e63005f..8ecb754 100644 --- a/src/WINNT/afsd/cm_scache.c +++ b/src/WINNT/afsd/cm_scache.c @@ -899,7 +899,7 @@ long cm_GetSCache(cm_fid_t *fidp, cm_fid_t *parentFidp, cm_scache_t **outScpp, c if (!cellp) { /* put back newScp so it can be reused */ lock_ObtainWrite(&cm_scacheLock); - newScp->flags |= CM_SCACHEFLAG_DELETED; + _InterlockedOr(&newScp->flags, CM_SCACHEFLAG_DELETED); cm_AdjustScacheLRU(newScp); lock_ReleaseWrite(&newScp->rw); lock_ReleaseWrite(&cm_scacheLock); @@ -910,7 +910,7 @@ long cm_GetSCache(cm_fid_t *fidp, cm_fid_t *parentFidp, cm_scache_t **outScpp, c if (code) { /* put back newScp so it can be reused */ lock_ObtainWrite(&cm_scacheLock); - newScp->flags |= CM_SCACHEFLAG_DELETED; + _InterlockedOr(&newScp->flags, CM_SCACHEFLAG_DELETED); cm_AdjustScacheLRU(newScp); lock_ReleaseWrite(&newScp->rw); lock_ReleaseWrite(&cm_scacheLock); @@ -941,7 +941,7 @@ long cm_GetSCache(cm_fid_t *fidp, cm_fid_t *parentFidp, cm_scache_t **outScpp, c cm_AdjustScacheLRU(scp); /* put back newScp so it can be reused */ - newScp->flags |= CM_SCACHEFLAG_DELETED; + _InterlockedOr(&newScp->flags, CM_SCACHEFLAG_DELETED); cm_AdjustScacheLRU(newScp); lock_ReleaseWrite(&newScp->rw); lock_ReleaseWrite(&cm_scacheLock);