From nobody Mon Apr 29 08:15:42 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1555425060; cv=none; d=zoho.com; s=zohoarc; b=nGGM7eD4vL37c9NOlKyfwFJZrIP3mYFRr9Oeul7tLLyb/0WmmFfxVBnK+ZdGLz/w8Dy68xP4zdhYp7AMLgWCQzPQ9KHO61kDLDpvWeWYPbh5ZK4IZEApL9f7Ych4svUl5mlJOPcYOyi46pAcRhHtRwX2Q1BYdygn6LRsFq/CE00= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1555425060; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=tCmy1rwln6icDSJMbQXzIUK8ymcFIHFcx32XumHm2GY=; b=S5lwuZxmAg72WJf44RrROh8Lm3maGI6AmO02DZjxIlGKxGuWaO5YalsYVF+mbA9P6ybptfAroW6gvs2eP5qsV+NY0gzkbirSBqdZGlr8G9PrjJ21ZbmxMitgoYUouJczi8SFLOPk0D+HMMTtFxvEjT5mWKey6Ygs5zahmVF0ugY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 155542506079787.91575796598943; Tue, 16 Apr 2019 07:31:00 -0700 (PDT) Received: from localhost ([127.0.0.1]:37790 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGP6u-0001he-S9 for importer@patchew.org; Tue, 16 Apr 2019 10:30:56 -0400 Received: from eggs.gnu.org ([209.51.188.92]:55791) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hGP4K-0008To-38 for qemu-devel@nongnu.org; Tue, 16 Apr 2019 10:28:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hGP4J-00035Y-8L for qemu-devel@nongnu.org; Tue, 16 Apr 2019 10:28:16 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59536) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hGP4G-00033x-Qy; Tue, 16 Apr 2019 10:28:12 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 199A63086229; Tue, 16 Apr 2019 14:28:12 +0000 (UTC) Received: from linux.fritz.box.com (ovpn-117-89.ams2.redhat.com [10.36.117.89]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3346B1001DE0; Tue, 16 Apr 2019 14:28:09 +0000 (UTC) From: Kevin Wolf To: qemu-block@nongnu.org Date: Tue, 16 Apr 2019 16:28:02 +0200 Message-Id: <20190416142802.11990-2-kwolf@redhat.com> In-Reply-To: <20190416142802.11990-1-kwolf@redhat.com> References: <20190416142802.11990-1-kwolf@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Tue, 16 Apr 2019 14:28:12 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 1/1] qcow2: Fix preallocation bdrv_pwrite to wrong file X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" With an external data file, preallocate_co() must write the final byte to the external data file, not to the qcow2 image file. This is harmless for preallocation of newly created images (only the qcow2 file size is increased to the virtual disk size while it should be much smaller), but with preallocated resize, it could in theory cause visible corruption if the metadata of the image is larger than the data (e.g. lots of bitmaps). Signed-off-by: Kevin Wolf Reviewed-by: Eric Blake --- block/qcow2.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/qcow2.c b/block/qcow2.c index d507ee0686..3ace3b2209 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2723,6 +2723,7 @@ static int qcow2_set_up_encryption(BlockDriverState *= bs, static int coroutine_fn preallocate_co(BlockDriverState *bs, uint64_t offs= et, uint64_t new_length) { + BDRVQcow2State *s =3D bs->opaque; uint64_t bytes; uint64_t host_offset =3D 0; unsigned int cur_bytes; @@ -2771,7 +2772,7 @@ static int coroutine_fn preallocate_co(BlockDriverSta= te *bs, uint64_t offset, */ if (host_offset !=3D 0) { uint8_t data =3D 0; - ret =3D bdrv_pwrite(bs->file, (host_offset + cur_bytes) - 1, + ret =3D bdrv_pwrite(s->data_file, (host_offset + cur_bytes) - 1, &data, 1); if (ret < 0) { return ret; --=20 2.20.1