Patches for 5.2.0-rc3:

- qcow2: Fix corruption on write_zeroes with MAY_UNMAP
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAl+9F2gRHGt3b2xmQHJl
 ZGhhdC5jb20ACgkQfwmycsiPL9ZN2RAAsBd7Q+U3wMpq7RSqHz3/j8MV9kqWge1G
 KjYMQfGIzyxdu/qk5PEtr1nrjOzhJWc1sCfYY+HltfzZDEZtg1z51PBW+WyakLkT
 DWKjsFfZgALU2/dM8mX1o0SYVuqFZ8ccE3W0Z/3KeVyNl50oZFmC7GF33lWpD7Zm
 tGeSAregjNyGnLdp3//Rv11M52XUXzdg7eY4t3Hginw/VX9La4NU8LJ3LPykRw4f
 gg4VImzZLkNLlxW5Kx5wvD9q1SQkRewEZn5RPGuGShQpZU8QKoKyu1f4/t5aDKaI
 eVnLQh2UQY2wj8W3VRaf7qHeHN662JCGXA9oziSVA3FmQcDeOOzxq9onnLeZ+5Gk
 5fvn97iXdx5BTAZHutY6bhNt4Jf0DoYLO4yYD91VvjrpM6TOg7nUYFwo3/a4yr5+
 jfIalGPpOqKlmtb+/ZMbLWrO5iQouw+KnbUnMceoK8QifG6YQJtIqjtu0vCvkbQC
 edoCcEiWcm3ul1vhbnOp0m42qaui9DKN5jTWpFsthRiTU7BcSyiUeZYZmiSNL85k
 LOwSeKXXCNpVUqujUDHQ+aDVYOFdaFankdkFX+kqJ4jZEYbN1+2GZI9PXwRsW5KD
 rELvYNct26IUSaAEgCSfmS1tfxiCrWrqoIPk9Syll3oY/IG5kMhPLs/+eDYpNa0W
 zdE69VtLg+k=
 =chuO
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Patches for 5.2.0-rc3:

- qcow2: Fix corruption on write_zeroes with MAY_UNMAP

# gpg: Signature made Tue 24 Nov 2020 14:23:36 GMT
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "kwolf@redhat.com"
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  qcow2: Fix corruption on write_zeroes with MAY_UNMAP

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2020-11-24 17:40:00 +00:00
commit c0e0a9b131
1 changed files with 6 additions and 3 deletions

View File

@ -2010,14 +2010,17 @@ static int zero_in_l2_slice(BlockDriverState *bs, uint64_t offset,
continue;
}
/* First update L2 entries */
qcow2_cache_entry_mark_dirty(s->l2_table_cache, l2_slice);
if (unmap) {
qcow2_free_any_cluster(bs, old_l2_entry, QCOW2_DISCARD_REQUEST);
}
set_l2_entry(s, l2_slice, l2_index + i, new_l2_entry);
if (has_subclusters(s)) {
set_l2_bitmap(s, l2_slice, l2_index + i, new_l2_bitmap);
}
/* Then decrease the refcount */
if (unmap) {
qcow2_free_any_cluster(bs, old_l2_entry, QCOW2_DISCARD_REQUEST);
}
}
qcow2_cache_put(s->l2_table_cache, (void **) &l2_slice);