OpenAFS Master Repository branch, master, updated. BP-openafs-stable-1_8_x-241-g930d8ee
Gerrit Code Review
Fri, 21 Sep 2018 09:13:01 -0400
The following commit has been merged in the master branch:
Author: Mark Vitale <email@example.com>
Date: Fri Aug 17 18:48:08 2018 -0400
volser: ensure GCTrans transaction walk remains valid
Commit bc56f5cc97a982ee29219e6f258b372dbfe1a020 ("volser: Delete
timed-out temporary volumes") introduced new logic to GCTrans().
Unfortunately, part of this logic temporarily drops VTRANS_LOCK in order
to call VPurgeVolume(). While this lock is dropped, other volser_trans
may be added or deleted from the allTrans list. Therefore, GCTrans
should not trust the next pointer (nt = tt->next) which was obtained
before the lock was dropped.
One symptom observed in the field was a segfault while examining
tt->volume. Neither tt nor volume were valid any longer, since tt had
been set from a stale nt at the top of the loop.
To repair, improve, and clarify this logic:
- Refactor so nt is assigned correctly and as late as possible.
- Add comments to explain the placement of the assigns to future
Reviewed-by: Benjamin Kaduk <firstname.lastname@example.org>
Tested-by: BuildBot <email@example.com>
src/volser/voltrans.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
OpenAFS Master Repository