]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
libafs: don't call afs_PutDCache(NULL) in afs_GetDownD()
authorGarrett Wollman <wollman@csail.mit.edu>
Sat, 13 Aug 2011 22:51:02 +0000 (18:51 -0400)
committerDerrick Brashear <shadow@dementix.org>
Sun, 14 Aug 2011 02:08:43 +0000 (19:08 -0700)
It's possible for an eviction candidate to be omitted by the small
for loop (around line 670), leaving its reference in victimDCs
set to NULL.  In the big for loop that follows, don't call
afs_PutDCache() when we hit one.

Change-Id: Ib0891636a3479bf97cdeab823189e659cb261aa6
Found-by: clang static analyzer with help from AFS_NONNULL
Reviewed-on: http://gerrit.openafs.org/5260
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/afs/afs_dcache.c

index 3d6f2d1f5d3c969cb07238ebde8b322cecdb28a0..da56b7c489e5e696f51fcdfafc7f005da28b76a7 100644 (file)
@@ -837,7 +837,8 @@ afs_GetDownD(int anumber, int *aneedSpace, afs_int32 buckethint)
                    j = 1;      /* we reclaimed at least one victim */
                }
            }
-           afs_PutDCache(tdc);
+           if (tdc)
+               afs_PutDCache(tdc);
        }                       /* end of for victims loop */
 
        if (phase < 5) {