Windows: AFSExamineObject() refcnt underflows
authorJeffrey Altman <jaltman@your-file-system.com>
Tue, 26 Mar 2013 12:52:59 +0000 (08:52 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Sat, 6 Apr 2013 02:25:00 +0000 (19:25 -0700)
Now that the reference counting is likely to be correct, do not
garbage collect objects with negative reference counts.  If the
reference counts are wrong the objects will never be destroyed but
that is now a safer choice than freeing memory that might be in use.

Change-Id: Ic8e781c4a775f8bcc66227b6f08f894c2fb85157
Reviewed-on: http://gerrit.openafs.org/9670
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp

index 32cab20..ee5d1d4 100644 (file)
@@ -1117,7 +1117,7 @@ AFSExamineObjectInfo( IN AFSObjectInfoCB * pCurrentObject,
             //
 
             if( BooleanFlagOn( pCurrentObject->Flags, AFS_OBJECT_FLAGS_DELETED) &&
-                pCurrentObject->ObjectReferenceCount <= 0 &&
+                pCurrentObject->ObjectReferenceCount == 0 &&
                 ( pCurrentObject->Fcb == NULL ||
                   pCurrentObject->Fcb->OpenReferenceCount == 0) &&
                 pCurrentObject->Specific.Directory.DirectoryNodeListHead == NULL &&
@@ -1138,7 +1138,7 @@ AFSExamineObjectInfo( IN AFSObjectInfoCB * pCurrentObject,
                     AFSAcquireExcl( &pCurrentObject->NonPagedInfo->ObjectInfoLock,
                                     TRUE);
 
-                    if ( pCurrentObject->ObjectReferenceCount <= 0)
+                    if ( pCurrentObject->ObjectReferenceCount == 0)
                     {
 
                         AFSRemoveFcb( &pCurrentObject->Fcb);