[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH v7 1/3] block/qcow2: Fix corruption introduced b
Re: [Qemu-block] [PATCH v7 1/3] block/qcow2: Fix corruption introduced by commit 8ac0f15f335
Mon, 16 Sep 2019 14:42:20 +0200
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0
On 15.09.19 22:36, Maxim Levitsky wrote:
> This fixes subtle corruption introduced by luks threaded encryption
> in commit 8ac0f15f335
> Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1745922
> The corruption happens when we do a write that
> * writes to two or more unallocated clusters at once
> * doesn't fully cover the first sector
> * doesn't fully cover the last sector
> * uses luks encryption
> In this case, when allocating the new clusters we COW both areas
> prior to the write and after the write, and we encrypt them.
> The above mentioned commit accidentally made it so we encrypt the
> second COW area using the physical cluster offset of the first area.
> The problem is that offset_in_cluster in do_perform_cow_encrypt
> can be larger that the cluster size, thus cluster_offset
> will no longer point to the start of the cluster at which encrypted
> area starts.
> Next patch in this series will refactor the code to avoid all these
> In the bugreport that was triggered by rebasing a luks image to new,
> zero filled base, which lot of such writes, and causes some files
> with zero areas to contain garbage there instead.
> But as described above it can happen elsewhere as well
> Signed-off-by: Maxim Levitsky <address@hidden>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
> block/qcow2-cluster.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
Reviewed-by: Max Reitz <address@hidden>
Description: OpenPGP digital signature