diff options
author | Frediano Ziglio <freddy77@gmail.com> | 2011-09-08 13:38:42 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-09-12 15:17:22 +0200 |
commit | 05140499d38154df942048109ad78421ae3fd43a (patch) | |
tree | f76e5af02856e2573a9c797777e32589e471f8dd /block | |
parent | 25ad22bc4e9c946df694fa7343027b1050b2946b (diff) | |
download | qemu-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.c | 10 |
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) { |