From 8729eb3984a99d1c2994dbbde3df97cb5f51ae3e Mon Sep 17 00:00:00 2001 From: Garrett Wollman Date: Sat, 13 Aug 2011 18:51:02 -0400 Subject: [PATCH] libafs: don't call afs_PutDCache(NULL) in afs_GetDownD() 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. Found-by: clang static analyzer with help from AFS_NONNULL Reviewed-on: http://gerrit.openafs.org/5260 Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit 10d27341808be41b29fbcc09b8bd7523c3b7a541) Change-Id: I4ff3ab9a57c1c48be0f7533ab3adb1e4b6ababf9 Reviewed-on: http://gerrit.openafs.org/5263 Reviewed-by: Derrick Brashear Tested-by: BuildBot --- src/afs/afs_dcache.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c index 038057eaf..41b68073a 100644 --- a/src/afs/afs_dcache.c +++ b/src/afs/afs_dcache.c @@ -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) { -- 2.39.5