summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorFrediano Ziglio <freddy77@gmail.com>2011-09-08 13:38:42 +0200
committerKevin Wolf <kwolf@redhat.com>2011-09-12 15:17:22 +0200
commit05140499d38154df942048109ad78421ae3fd43a (patch)
treef76e5af02856e2573a9c797777e32589e471f8dd /block
parent25ad22bc4e9c946df694fa7343027b1050b2946b (diff)
downloadqemu-05140499d38154df942048109ad78421ae3fd43a.tar.gz
qemu-05140499d38154df942048109ad78421ae3fd43a.tar.bz2
qemu-05140499d38154df942048109ad78421ae3fd43a.zip
qcow2: initialize metadata before inserting in cluster_allocs
QCow2Meta structure was inserted into list before many fields are initialized. Currently is not a problem cause all occur in a lock but if qcow2_alloc_clusters would in a future unlock this lock some issues could arise. Initializing fields before inserting fix the problem. Signed-off-by: Frediano Ziglio <freddy77@gmail.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/qcow2-cluster.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 113db8b414..428b5ad5e8 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -806,6 +806,11 @@ again:
abort();
}
+ /* save info needed for meta data update */
+ m->offset = offset;
+ m->n_start = n_start;
+ m->nb_clusters = nb_clusters;
+
QLIST_INSERT_HEAD(&s->cluster_allocs, m, next_in_flight);
/* allocate a new cluster */
@@ -816,11 +821,6 @@ again:
goto fail;
}
- /* save info needed for meta data update */
- m->offset = offset;
- m->n_start = n_start;
- m->nb_clusters = nb_clusters;
-
out:
ret = qcow2_cache_put(bs, s->l2_table_cache, (void**) &l2_table);
if (ret < 0) {