summaryrefslogtreecommitdiffstats
path: root/sys/rpc/replay.c
diff options
context:
space:
mode:
authorrmacklem <rmacklem@FreeBSD.org>2010-08-25 00:35:58 +0000
committerrmacklem <rmacklem@FreeBSD.org>2010-08-25 00:35:58 +0000
commit4d7ceccb999936caa15c9a60f3e8ae82545c5a2d (patch)
treea74e66ea47ae7580adea4b34b64e2c035443fd65 /sys/rpc/replay.c
parentd1b92febc4113a9dd1c4663bed88b70aef7819f9 (diff)
downloadFreeBSD-src-4d7ceccb999936caa15c9a60f3e8ae82545c5a2d.zip
FreeBSD-src-4d7ceccb999936caa15c9a60f3e8ae82545c5a2d.tar.gz
If the first iteration of the do loop in replay_prune()
succeeded and a subsequent interation failed to find an entry to prune, it could loop infinitely, since the "freed" variable wasn't reset to FALSE. This patch moves setting freed FALSE to inside the loop to fix the problem. Tested by: alan.bryan at yahoo.com MFC after: 2 weeks
Diffstat (limited to 'sys/rpc/replay.c')
-rw-r--r--sys/rpc/replay.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/rpc/replay.c b/sys/rpc/replay.c
index d82fc20..c89def5 100644
--- a/sys/rpc/replay.c
+++ b/sys/rpc/replay.c
@@ -144,8 +144,8 @@ replay_prune(struct replay_cache *rc)
bool_t freed_one;
if (rc->rc_count >= REPLAY_MAX || rc->rc_size > rc->rc_maxsize) {
- freed_one = FALSE;
do {
+ freed_one = FALSE;
/*
* Try to free an entry. Don't free in-progress entries
*/
OpenPOWER on IntegriCloud