From: Vladimir Sementsov-Ogievskiy <[email protected]> Though it is not intended to be reached through normal circumstances, if we do not gracefully deconstruct the transaction QLIST, we may wind up with stale pointers in the list.
The rest of this series attempts to address the underlying issues, but this should fix list inconsistencies. Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> Tested-by: John Snow <[email protected]> Reviewed-by: John Snow <[email protected]> [Rewrote commit message. --js] Signed-off-by: John Snow <[email protected]> Signed-off-by: John Snow <[email protected]> --- blockjob.c | 1 + 1 file changed, 1 insertion(+) diff --git a/blockjob.c b/blockjob.c index a5ba3be..e045091 100644 --- a/blockjob.c +++ b/blockjob.c @@ -216,6 +216,7 @@ static void block_job_completed_single(BlockJob *job) } job->cb(job->opaque, job->ret); if (job->txn) { + QLIST_REMOVE(job, txn_list); block_job_txn_unref(job->txn); } block_job_unref(job); -- 2.7.4
