From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608230274; cv=none; d=zohomail.com; s=zohoarc; b=bzt26Rfkpbyk+IlphOdJTI5YuiGwUj1awDRuPmadSsa2vkJRhRmah7h19Q7bj9JMOzW6ImPRzORMklBD8glFXc2G9AIrqFBV9OT0IkepVgkKhuqVE6SCgyFjPkljk2AFRUmU+kHjUnxe0MbVGpP0f58jR4tAxcyrIvOR7M39iSo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608230274; h=Content-Type: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; bh=z1gF9HfQAcfFrilbjpPxEtnwx7XSf+MCSBT33RJVHaU=; b=WKvpdubpunELthG3NU4WWAgE6Q0CbgPt/eMLzFR1VVuSUlrstOx6g3MbCYXf0cf2mv2h1OzfQ+rUCALfsUw1xLsCJTQS3XvZv7ZP7qSTrMXfL7RCVaoBqZXWSin9Oy69eqA5ByBLf64Z4WFZN0KLIfsmc4id0e8gJdjw60h5dU4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608230274559138.96003606127988; Thu, 17 Dec 2020 10:37:54 -0800 (PST) Received: from localhost ([::1]:50306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw2D-00042s-SY for importer@patchew.org; Thu, 17 Dec 2020 11:21:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52806) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0g-0002D2-6r for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:10 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:38626) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0e-0005Nw-6O for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:09 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-409-XP4cOm-zPVuIv5YE6zArYw-1; Thu, 17 Dec 2020 11:20:06 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 0B9BAB8100; Thu, 17 Dec 2020 16:20:05 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CF6D460CE7; Thu, 17 Dec 2020 16:20:04 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 638AD1141D30; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=z1gF9HfQAcfFrilbjpPxEtnwx7XSf+MCSBT33RJVHaU=; b=WCdgNMWTAdz3iMdEGeHxYDIZVVMJtWZRUt7TYVyMbfYh4xxZcA9w9oiKcPSI7y1k8YKtvQ ywPw4Z5BlErMrjdKiY5dyKdb4vjytcw2YwU/K/K+jCsBjdA9amp/sLshf0kNyPLqpWca3I KrB04EBCEQIx3UudTzgdjm8eeDFYpzE= X-MC-Unique: XP4cOm-zPVuIv5YE6zArYw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 1/9] block/vpc: Make vpc_open() read the full dynamic header Date: Thu, 17 Dec 2020 17:19:55 +0100 Message-Id: <20201217162003.1102738-2-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The dynamic header's size is 1024 bytes. vpc_open() reads only the 512 bytes of the dynamic header into buf[]. Works, because it doesn't actually access the second half. However, a colleague told me that GCC 11 warns: ../block/vpc.c:358:51: error: array subscript 'struct VHDDynDiskHeader[= 0]' is partly outside array bounds of 'uint8_t[512]' [-Werror=3Darray-bound= s] Clean up to read the full header. Rename buf[] to dyndisk_header_buf[] while there. Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index 1ab55f9287..2fcf3f6283 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -220,7 +220,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, QemuOpts *opts =3D NULL; Error *local_err =3D NULL; bool use_chs; - uint8_t buf[HEADER_SIZE]; + uint8_t dyndisk_header_buf[1024]; uint32_t checksum; uint64_t computed_size; uint64_t pagetable_size; @@ -340,14 +340,14 @@ static int vpc_open(BlockDriverState *bs, QDict *opti= ons, int flags, } =20 if (disk_type =3D=3D VHD_DYNAMIC) { - ret =3D bdrv_pread(bs->file, be64_to_cpu(footer->data_offset), buf, - HEADER_SIZE); + ret =3D bdrv_pread(bs->file, be64_to_cpu(footer->data_offset), + dyndisk_header_buf, 1024); if (ret < 0) { error_setg(errp, "Error reading dynamic VHD header"); goto fail; } =20 - dyndisk_header =3D (VHDDynDiskHeader *) buf; + dyndisk_header =3D (VHDDynDiskHeader *)dyndisk_header_buf; =20 if (strncmp(dyndisk_header->magic, "cxsparse", 8)) { error_setg(errp, "Invalid header magic"); --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608248218; cv=none; d=zohomail.com; s=zohoarc; b=QtetPgkuWjY2WLfvKWHm+c+fUcrhbtMQ9NyjlkQ7/GmR+bfGfiIXCWDXqJEfcPB5Gcx81MeAtlsX49bcAfIoPzPIyQaH48Q4UNQKWjs4poqKMJkqs+ZwOmh0gDWWoFJadYPc2pZy+4pbOZJ3tfIjYT8r8S0P3t2UFsoISq1Y8xs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608248218; h=Content-Type: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; bh=t9a/0++Tkvi0WnYmbr3zluhDVWTUnDcYIhmwZvJAB00=; b=EAx0Oytn9uMpB0077RWWM6Q4o/QuFLMLnzFUQzx1rCIH6K4uEitf7HaQymlX+FtzZPpV9zMY+YQpWJQlqdJdMh4gQhMHgk9q72HUn8G5FHRGOPZccz1BlD64X9V5yOl36WL391Kcg9oIFXUKh5bpeES2/XjiYZRwbHkxoQkq2BY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608248218810731.2032390734538; Thu, 17 Dec 2020 15:36:58 -0800 (PST) Received: from localhost ([::1]:60056 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw54-00085w-7H for importer@patchew.org; Thu, 17 Dec 2020 11:24:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52940) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0l-0002Ea-1i for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:36831) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0g-0005Oy-Ch for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:14 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-190-SYFYP6j2Pb23q1ZU4LZoWQ-1; Thu, 17 Dec 2020 11:20:06 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 14E6D1005504; Thu, 17 Dec 2020 16:20:05 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D517466A16; Thu, 17 Dec 2020 16:20:04 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 69255114200A; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=t9a/0++Tkvi0WnYmbr3zluhDVWTUnDcYIhmwZvJAB00=; b=Kz0u3oqSLE8sVD4uEi2WKFkkljo/dPMyjAxBZIqC74OSHE6jVSOFYsTOic8frBG4iVPvIl 6YLZOLZPFgkX2Y9+shnVZirLnxZm2z3idVOEHoa3dGnxqXwUDDPm4JirME7IqV87hrivZs KKK/GyTPC5bS226q1LHQWjr4dVO2r3Q= X-MC-Unique: SYFYP6j2Pb23q1ZU4LZoWQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 2/9] block/vpc: Don't abuse the footer buffer as BAT sector buffer Date: Thu, 17 Dec 2020 17:19:56 +0100 Message-Id: <20201217162003.1102738-3-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" create_dynamic_disk() takes a buffer holding the footer as first argument. It writes out the footer (512 bytes), then reuses the buffer to initialize and write out the dynamic header (1024 bytes), then reuses it again to initialize and write out BAT sectors (512). Works, because the caller passes a buffer that is large enough for all three purposes. I hate that. Use a separate buffer for writing out BAT sectors. The next commit will do the same for the dynamic header. Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index 2fcf3f6283..d18ecc3da1 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -824,6 +824,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8= _t *buf, { VHDDynDiskHeader *dyndisk_header =3D (VHDDynDiskHeader *) buf; + uint8_t bat_sector[512]; size_t block_size, num_bat_entries; int i; int ret; @@ -847,9 +848,9 @@ static int create_dynamic_disk(BlockBackend *blk, uint8= _t *buf, /* Write the initial BAT */ offset =3D 3 * 512; =20 - memset(buf, 0xFF, 512); + memset(bat_sector, 0xFF, 512); for (i =3D 0; i < DIV_ROUND_UP(num_bat_entries * 4, 512); i++) { - ret =3D blk_pwrite(blk, offset, buf, 512, 0); + ret =3D blk_pwrite(blk, offset, bat_sector, 512, 0); if (ret < 0) { goto fail; } --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608248295; cv=none; d=zohomail.com; s=zohoarc; b=Qe5xLFK1lY977qWoZzaI/8sdn/t3+9kajSl+HmpyufD9Ev6B6sUqlF0kbA0h/tKzLKEFBcDxu0+jtH8TXjalpocoE2hXfYImrWmDeF++yOKHvflElrSosASeiqsYWdrrBGgHJWsHZ/28pcWym4sqHhdsk1VCk+1zE7tF/lS3AYs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608248295; h=Content-Type: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; bh=oKtc0m71zqbuxVjvXgik25ZLjeRuMWE5ZhOcCrOTdbI=; b=hIcEE/s1umfd3eylmVH2fg8lT8RVsz8Vvw75MhtNh98vS4p2xpESVfcFeWaPUdVVsNKoci+CaGnZlDLJE3bqoIfHvgTGI3IaOTiVkzfIklNBQlxVGlnWj2RX//Nx5aQUAhvggdrCiZUzRtVpZSMe9h0NSGBcAZJQyyJoT7MukrY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608248295641592.2605679860425; Thu, 17 Dec 2020 15:38:15 -0800 (PST) Received: from localhost ([::1]:50372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw2E-00044j-An for importer@patchew.org; Thu, 17 Dec 2020 11:21:46 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52882) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0i-0002DW-T6 for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:12 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:20496) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0e-0005O2-Rd for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:12 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-190-OYBVbXHDPyO3Tz93e_4G4A-1; Thu, 17 Dec 2020 11:20:06 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1606AB8101; Thu, 17 Dec 2020 16:20:05 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D792E18A50; Thu, 17 Dec 2020 16:20:04 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 6D1F1114200B; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222007; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oKtc0m71zqbuxVjvXgik25ZLjeRuMWE5ZhOcCrOTdbI=; b=hPE1EJwUnnBic7n5mFxdiSww4fsOLIXBImIjARf9h9tapMCZ8mDlPvHpio4HDW/IwOlQvw JVbAcCeiyBc1QAPj0tFnOwJpHzTn/yeXRUWlWPwY8GSpnrFYFv09OPBrPdIbQ6hwFSJUCU sCsGYASdVaLQ6g3lP1PDKfYVAtNzMWo= X-MC-Unique: OYBVbXHDPyO3Tz93e_4G4A-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 3/9] block/vpc: Don't abuse the footer buffer for dynamic header Date: Thu, 17 Dec 2020 17:19:57 +0100 Message-Id: <20201217162003.1102738-4-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" create_dynamic_disk() takes a buffer holding the footer as first argument. It writes out the footer (512 bytes), then reuses the buffer to initialize and write out the dynamic header (1024 bytes). Works, because the caller passes a buffer that is large enough for both purposes. I hate that. Use a separate buffer for the dynamic header, and adjust the caller's buffer. Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index d18ecc3da1..34186640ee 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -822,8 +822,9 @@ static int calculate_geometry(int64_t total_sectors, ui= nt16_t *cyls, static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf, int64_t total_sectors) { + uint8_t dyndisk_header_buf[1024]; VHDDynDiskHeader *dyndisk_header =3D - (VHDDynDiskHeader *) buf; + (VHDDynDiskHeader *)dyndisk_header_buf; uint8_t bat_sector[512]; size_t block_size, num_bat_entries; int i; @@ -858,7 +859,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8= _t *buf, } =20 /* Prepare the Dynamic Disk Header */ - memset(buf, 0, 1024); + memset(dyndisk_header_buf, 0, 1024); =20 memcpy(dyndisk_header->magic, "cxsparse", 8); =20 @@ -872,12 +873,13 @@ static int create_dynamic_disk(BlockBackend *blk, uin= t8_t *buf, dyndisk_header->block_size =3D cpu_to_be32(block_size); dyndisk_header->max_table_entries =3D cpu_to_be32(num_bat_entries); =20 - dyndisk_header->checksum =3D cpu_to_be32(vpc_checksum(buf, 1024)); + dyndisk_header->checksum =3D cpu_to_be32(vpc_checksum(dyndisk_header_b= uf, + 1024)); =20 /* Write the header */ offset =3D 512; =20 - ret =3D blk_pwrite(blk, offset, buf, 1024, 0); + ret =3D blk_pwrite(blk, offset, dyndisk_header_buf, 1024, 0); if (ret < 0) { goto fail; } @@ -972,8 +974,8 @@ static int coroutine_fn vpc_co_create(BlockdevCreateOpt= ions *opts, BlockBackend *blk =3D NULL; BlockDriverState *bs =3D NULL; =20 - uint8_t buf[1024]; - VHDFooter *footer =3D (VHDFooter *) buf; + uint8_t footer_buf[HEADER_SIZE]; + VHDFooter *footer =3D (VHDFooter *)footer_buf; uint16_t cyls =3D 0; uint8_t heads =3D 0; uint8_t secs_per_cyl =3D 0; @@ -1036,7 +1038,7 @@ static int coroutine_fn vpc_co_create(BlockdevCreateO= ptions *opts, } =20 /* Prepare the Hard Disk Footer */ - memset(buf, 0, 1024); + memset(footer_buf, 0, HEADER_SIZE); =20 memcpy(footer->creator, "conectix", 8); if (vpc_opts->force_size) { @@ -1069,15 +1071,15 @@ static int coroutine_fn vpc_co_create(BlockdevCreat= eOptions *opts, qemu_uuid_generate(&uuid); footer->uuid =3D uuid; =20 - footer->checksum =3D cpu_to_be32(vpc_checksum(buf, HEADER_SIZE)); + footer->checksum =3D cpu_to_be32(vpc_checksum(footer_buf, HEADER_SIZE)= ); =20 if (disk_type =3D=3D VHD_DYNAMIC) { - ret =3D create_dynamic_disk(blk, buf, total_sectors); + ret =3D create_dynamic_disk(blk, footer_buf, total_sectors); if (ret < 0) { error_setg(errp, "Unable to create or write VHD header"); } } else { - ret =3D create_fixed_disk(blk, buf, total_size, errp); + ret =3D create_fixed_disk(blk, footer_buf, total_size, errp); } =20 out: --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608248318; cv=none; d=zohomail.com; s=zohoarc; b=WwKIbJRQPfy6mhpxNWoZOvyFx7Szc+Y0QLwXPGZa1w8X1zRt6QEAqK9rif5gjJLPD2slYV09NdFAH3/P2KCWC5aQRbniz1w8URhee5rKPxI+4yCsiwlS6u5sjqCRFVofk/e+76Wqw/K39h698e7tI1TeXQpwf4OfuCmC2mhfXSg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608248318; h=Content-Type: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; bh=J5xipQoiZyhst2PWZKkX5026CZ2plgc4fBm1WPl4xuY=; b=OSb+wysMkxTg1AKZjRrwKTlJSwPWECH49HuPSWcuT++nuynpmQvxhQeBi88kGGKoMVzz4KLkULDYq/F0cS9Su3firwesB8wgWmtAn9UbCoUaMxQC7Ji2YAhvRocunekrWOKK1yuaksimQ/r/diOva1RkwumdrF7brwU3dKLkmik= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608248318544690.3009616239972; Thu, 17 Dec 2020 15:38:38 -0800 (PST) Received: from localhost ([::1]:51094 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw2L-0004ME-5I for importer@patchew.org; Thu, 17 Dec 2020 11:21:53 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52886) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0j-0002De-26 for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:14 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:42721) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0f-0005OT-Hb for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:12 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-425-UWqHtkBQMXmN0LJzWLSacA-1; Thu, 17 Dec 2020 11:20:06 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 1DAAE803622; Thu, 17 Dec 2020 16:20:05 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DE7E960D52; Thu, 17 Dec 2020 16:20:04 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7197E11275D0; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222008; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=J5xipQoiZyhst2PWZKkX5026CZ2plgc4fBm1WPl4xuY=; b=Ag0uUhoqwpCFqYizRbSXt+rS8YiH6ZykZ5543z9vPAOEGhJxTGndo+zygP3w+O3qvQBlip pfeDiBNg6Ho5dxWUYB7I0mkERYaoi1bxVblMyavl5Yz+QLeYD8DSeaMwJ+NL6fHpT1ePBP /xpN9XcHg6m2DzgICmYZUh+2QQPChko= X-MC-Unique: UWqHtkBQMXmN0LJzWLSacA-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 4/9] block/vpc: Make vpc_checksum() take void * Date: Thu, 17 Dec 2020 17:19:58 +0100 Message-Id: <20201217162003.1102738-5-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Some of the next commits will checksum structs. Change vpc_checksum() to take void * instead of uint8_t, to save us pointless casts to uint8_t *. Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/vpc.c b/block/vpc.c index 34186640ee..5af9837806 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -172,8 +172,9 @@ static QemuOptsList vpc_runtime_opts =3D { =20 static QemuOptsList vpc_create_opts; =20 -static uint32_t vpc_checksum(uint8_t *buf, size_t size) +static uint32_t vpc_checksum(void *p, size_t size) { + uint8_t *buf =3D p; uint32_t res =3D 0; int i; =20 --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608235198; cv=none; d=zohomail.com; s=zohoarc; b=MLPSalNj04bNu5bNP451okYr3wcjvLTr7mDwySKCoh41+wZK+erpXX7PpYIv/9MD+b1UaeXcaUb7pcGiTeGlI2MewzTitAC5qLMKsyyD8r2I/Rv3l/OX1Bm6y1aVLY8mRwyrWaPN8QXFqIz5KKhdzTm1PLcJtiuku/1atA9hX0Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608235198; h=Content-Type: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; bh=7h+eBah8kHTwwxESGsZaB0yUNenXZEGFi6sQIvW5RIY=; b=a0Cht7W8qyRX9G3ZfgCKG8IRBadCxklyREqojFqxDNrnceTPv6pcCjyIUi4B9TgqEGMHYJzCVBFPuFCsbvtbK3VOLRaVORxA5mNFhsb8pgLLwNztQUCrotEJA0+LF4xgpKOzx/a1TEBL3rPIO3OqdxPeQv9TQpJvRbFw54xK3sQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608235198069771.7739233603481; Thu, 17 Dec 2020 11:59:58 -0800 (PST) Received: from localhost ([::1]:32942 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw5V-00006g-6L for importer@patchew.org; Thu, 17 Dec 2020 11:25:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53044) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0q-0002I0-Oc for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:20 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:24368) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0g-0005PO-R9 for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:20 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-13-C3DCOzwANmeJ_jsL8Ad6Jw-1; Thu, 17 Dec 2020 11:20:07 -0500 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id BB61A107ACF8; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6272C1002391; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 74CA311275D7; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7h+eBah8kHTwwxESGsZaB0yUNenXZEGFi6sQIvW5RIY=; b=YtWqlUdRQAI1LlllZnnhHQM5mUDDSQ8lyA4zC36A0tedqXxekYZchwqqA1d1mRYmg9L1iJ SApsH1Y9yOKJVhM664LyHeklqP6bo9BW1rWtzbMMrTvkP+o0sfc8pgkJ//nvBkNcupRk6/ eW0GynVuRPcN7l0kDV4eF37/+a4NLtA= X-MC-Unique: C3DCOzwANmeJ_jsL8Ad6Jw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 5/9] block/vpc: Pad VHDDynDiskHeader, replace uint8_t[] buffers Date: Thu, 17 Dec 2020 17:19:59 +0100 Message-Id: <20201217162003.1102738-6-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Pad VHDDynDiskHeader as specified in the "Virtual Hard Disk Image Format Specification" version 1.0[*]. Change dynamic disk header buffers from uint8_t[1024] to VHDDynDiskHeader. Their size remains the same. The VHDDynDiskHeader * variables pointing to a VHDDynDiskHeader variable right next to it are now silly. Eliminate them. [*] http://download.microsoft.com/download/f/f/e/ffef50a5-07dd-4cf8-aaa3-44= 2c0673a029/Virtual%20Hard%20Disk%20Format%20Spec_10_18_06.doc Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index 5af9837806..08a0f710ad 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -127,8 +127,11 @@ typedef struct vhd_dyndisk_header { uint32_t reserved; uint64_t data_offset; } parent_locator[8]; + uint8_t reserved2[256]; } QEMU_PACKED VHDDynDiskHeader; =20 +QEMU_BUILD_BUG_ON(sizeof(VHDDynDiskHeader) !=3D 1024); + typedef struct BDRVVPCState { CoMutex lock; uint8_t footer_buf[HEADER_SIZE]; @@ -217,11 +220,10 @@ static int vpc_open(BlockDriverState *bs, QDict *opti= ons, int flags, BDRVVPCState *s =3D bs->opaque; int i; VHDFooter *footer; - VHDDynDiskHeader *dyndisk_header; QemuOpts *opts =3D NULL; Error *local_err =3D NULL; bool use_chs; - uint8_t dyndisk_header_buf[1024]; + VHDDynDiskHeader dyndisk_header; uint32_t checksum; uint64_t computed_size; uint64_t pagetable_size; @@ -342,21 +344,19 @@ static int vpc_open(BlockDriverState *bs, QDict *opti= ons, int flags, =20 if (disk_type =3D=3D VHD_DYNAMIC) { ret =3D bdrv_pread(bs->file, be64_to_cpu(footer->data_offset), - dyndisk_header_buf, 1024); + &dyndisk_header, 1024); if (ret < 0) { error_setg(errp, "Error reading dynamic VHD header"); goto fail; } =20 - dyndisk_header =3D (VHDDynDiskHeader *)dyndisk_header_buf; - - if (strncmp(dyndisk_header->magic, "cxsparse", 8)) { + if (strncmp(dyndisk_header.magic, "cxsparse", 8)) { error_setg(errp, "Invalid header magic"); ret =3D -EINVAL; goto fail; } =20 - s->block_size =3D be32_to_cpu(dyndisk_header->block_size); + s->block_size =3D be32_to_cpu(dyndisk_header.block_size); if (!is_power_of_2(s->block_size) || s->block_size < BDRV_SECTOR_S= IZE) { error_setg(errp, "Invalid block size %" PRIu32, s->block_size); ret =3D -EINVAL; @@ -364,7 +364,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, } s->bitmap_size =3D ((s->block_size / (8 * 512)) + 511) & ~511; =20 - s->max_table_entries =3D be32_to_cpu(dyndisk_header->max_table_ent= ries); + s->max_table_entries =3D be32_to_cpu(dyndisk_header.max_table_entr= ies); =20 if ((bs->total_sectors * 512) / s->block_size > 0xffffffffU) { error_setg(errp, "Too many blocks"); @@ -396,7 +396,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, goto fail; } =20 - s->bat_offset =3D be64_to_cpu(dyndisk_header->table_offset); + s->bat_offset =3D be64_to_cpu(dyndisk_header.table_offset); =20 ret =3D bdrv_pread(bs->file, s->bat_offset, s->pagetable, pagetable_size); @@ -823,9 +823,7 @@ static int calculate_geometry(int64_t total_sectors, ui= nt16_t *cyls, static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf, int64_t total_sectors) { - uint8_t dyndisk_header_buf[1024]; - VHDDynDiskHeader *dyndisk_header =3D - (VHDDynDiskHeader *)dyndisk_header_buf; + VHDDynDiskHeader dyndisk_header; uint8_t bat_sector[512]; size_t block_size, num_bat_entries; int i; @@ -860,27 +858,26 @@ static int create_dynamic_disk(BlockBackend *blk, uin= t8_t *buf, } =20 /* Prepare the Dynamic Disk Header */ - memset(dyndisk_header_buf, 0, 1024); + memset(&dyndisk_header, 0, 1024); =20 - memcpy(dyndisk_header->magic, "cxsparse", 8); + memcpy(dyndisk_header.magic, "cxsparse", 8); =20 /* * Note: The spec is actually wrong here for data_offset, it says * 0xFFFFFFFF, but MS tools expect all 64 bits to be set. */ - dyndisk_header->data_offset =3D cpu_to_be64(0xFFFFFFFFFFFFFFFFULL); - dyndisk_header->table_offset =3D cpu_to_be64(3 * 512); - dyndisk_header->version =3D cpu_to_be32(0x00010000); - dyndisk_header->block_size =3D cpu_to_be32(block_size); - dyndisk_header->max_table_entries =3D cpu_to_be32(num_bat_entries); + dyndisk_header.data_offset =3D cpu_to_be64(0xFFFFFFFFFFFFFFFFULL); + dyndisk_header.table_offset =3D cpu_to_be64(3 * 512); + dyndisk_header.version =3D cpu_to_be32(0x00010000); + dyndisk_header.block_size =3D cpu_to_be32(block_size); + dyndisk_header.max_table_entries =3D cpu_to_be32(num_bat_entries); =20 - dyndisk_header->checksum =3D cpu_to_be32(vpc_checksum(dyndisk_header_b= uf, - 1024)); + dyndisk_header.checksum =3D cpu_to_be32(vpc_checksum(&dyndisk_header, = 1024)); =20 /* Write the header */ offset =3D 512; =20 - ret =3D blk_pwrite(blk, offset, dyndisk_header_buf, 1024, 0); + ret =3D blk_pwrite(blk, offset, &dyndisk_header, 1024, 0); if (ret < 0) { goto fail; } --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608248054; cv=none; d=zohomail.com; s=zohoarc; b=oCR64FeLZhPZWcvtPfRg7F/dmi521PqvEJu0WF9fBAU3IonyMzWdA6bQnFHRtEjDQHdcGqEdcaaU8E2KNga1uFAwr75tnCRRc26w3pri7adOK6k5Ghf3PvyrIszGXtUoCqIMKTVQejDH1dXe9EERRAXCNAIFXqLp0+V+ya4sNb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608248054; h=Content-Type: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; bh=pACxAMuSVyL0Q9r6OciqTPkBBSnoS2TTQgXRl+aqB8w=; b=G+tubQs347QPdrLWHzPiPwARrMjuBjt6/sZpNZxTYCb1K7DnAeojHB5IuPhLjnVrURigcuu0A1qSOS+O1AyhobcvSTP4ueYNd36SIrLa3pHtp8HPVR7cVb3HUQl5u7yGUpqfaOQXrEMlkIVZdqBqR0kQSB8zum4TJTJTmLd9dz8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608248054625578.9641137362456; Thu, 17 Dec 2020 15:34:14 -0800 (PST) Received: from localhost ([::1]:39528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw78-00039u-CL for importer@patchew.org; Thu, 17 Dec 2020 11:26:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52982) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0m-0002Ei-5k for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:29655) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0f-0005Oh-VI for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:14 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-544-dHAFWnG3O6WhtZFu9fy_ZA-1; Thu, 17 Dec 2020 11:20:07 -0500 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id 96DCE1842140; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 626D810013C0; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 79F4D11275DA; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=pACxAMuSVyL0Q9r6OciqTPkBBSnoS2TTQgXRl+aqB8w=; b=WoYHKyCF020jGumrRzKviaKLUQ/60JlDAR46A2dL5+/yyN5g02QC3+ROShH71Yy985eOCW q5z3OdzKrwzfsMcg+8zqNYb7X2/PQlBn8+BuyJAzg0AojeKLqg7/6dLbyLAmfkW3SN9AU3 exY4zCZpJ5T45S+ozr4VAzXheQJsnac= X-MC-Unique: dHAFWnG3O6WhtZFu9fy_ZA-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 6/9] block/vpc: Use sizeof() instead of 1024 for dynamic header size Date: Thu, 17 Dec 2020 17:20:00 +0100 Message-Id: <20201217162003.1102738-7-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index 08a0f710ad..6cb656ac82 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -344,7 +344,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, =20 if (disk_type =3D=3D VHD_DYNAMIC) { ret =3D bdrv_pread(bs->file, be64_to_cpu(footer->data_offset), - &dyndisk_header, 1024); + &dyndisk_header, sizeof(dyndisk_header)); if (ret < 0) { error_setg(errp, "Error reading dynamic VHD header"); goto fail; @@ -858,7 +858,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8= _t *buf, } =20 /* Prepare the Dynamic Disk Header */ - memset(&dyndisk_header, 0, 1024); + memset(&dyndisk_header, 0, sizeof(dyndisk_header)); =20 memcpy(dyndisk_header.magic, "cxsparse", 8); =20 @@ -872,12 +872,13 @@ static int create_dynamic_disk(BlockBackend *blk, uin= t8_t *buf, dyndisk_header.block_size =3D cpu_to_be32(block_size); dyndisk_header.max_table_entries =3D cpu_to_be32(num_bat_entries); =20 - dyndisk_header.checksum =3D cpu_to_be32(vpc_checksum(&dyndisk_header, = 1024)); + dyndisk_header.checksum =3D cpu_to_be32( + vpc_checksum(&dyndisk_header, sizeof(dyndisk_header))); =20 /* Write the header */ offset =3D 512; =20 - ret =3D blk_pwrite(blk, offset, &dyndisk_header, 1024, 0); + ret =3D blk_pwrite(blk, offset, &dyndisk_header, sizeof(dyndisk_header= ), 0); if (ret < 0) { goto fail; } --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608248261; cv=none; d=zohomail.com; s=zohoarc; b=dljPWdYpt1MwBU9NVp9oxYURyyJmGT/5FEgadXeOnw6exf5qZoEKFNzAU9+0karRSpTU5hrNEpxnjJQsg8vOidVXZQFZHjIRIblUnDwvnhe2/2o3YzZq2CfUspWK4uqDSHUfOVqTANF3tusjWCO9kA7qxoRBGG3FMP7b5j4DEcw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608248261; h=Content-Type: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; bh=Pl1px/GIEXuEXG37uVd8gLWn5x381+kxFyRYSXOu6Vw=; b=h0FP24rF3Mc0y1gXRjgQuT/PgXWYxjwTKcPcd0DydYKJPAzONsQ81GgxpBuPD0opICjgup+dd93Qm7BeLXoljeG3dtQ/XIOYeJTs3q7AE/VwLL1h2S0it5Wg1VvlFge+NU3Bomnl9W8pm4jR9cJgoKJZ7Jd05ZY8iQt4qAnJ9pw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608248261079594.4815784681424; Thu, 17 Dec 2020 15:37:41 -0800 (PST) Received: from localhost ([::1]:60306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw55-0008Cb-Bz for importer@patchew.org; Thu, 17 Dec 2020 11:24:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:53068) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0t-0002JJ-Ar for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:24 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:48371) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0r-0005Su-Db for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:23 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-361-7eo17_Z5OOqR_1t_d4oAMQ-1; Thu, 17 Dec 2020 11:20:07 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BC6A9B8105; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 671FD5D71D; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 7FF6911275DE; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222020; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Pl1px/GIEXuEXG37uVd8gLWn5x381+kxFyRYSXOu6Vw=; b=E0rv9okvqWKuIl/93wiEd19yiB0Cmmygv75f1WCjOpihTEXs393EP5ZmRcjd+9TcSazAwz VdlityNlImiyEfaD3/k7peaqjN9YsNS93l+RbxTrETMY66eMToNOsLbIoWQnWfd0qKKjk/ S5UsE9y4pls2hWLOwx9VOCakMNIJX10= X-MC-Unique: 7eo17_Z5OOqR_1t_d4oAMQ-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 7/9] block/vpc: Pad VHDFooter, replace uint8_t[] buffers Date: Thu, 17 Dec 2020 17:20:01 +0100 Message-Id: <20201217162003.1102738-8-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Pad VHDFooter as specified in the "Virtual Hard Disk Image Format Specification" version 1.0[*]. Change footer buffers from uint8_t[HEADER_SIZE] to VHDFooter. Their size remains the same. The VHDFooter * variables pointing to a VHDFooter variable right next to it are now silly. Eliminate them, and shorten the remaining variables' names. Most variables pointing to s->footer are now also silly. Eliminate them, too. [*] http://download.microsoft.com/download/f/f/e/ffef50a5-07dd-4cf8-aaa3-44= 2c0673a029/Virtual%20Hard%20Disk%20Format%20Spec_10_18_06.doc Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 77 +++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index 6cb656ac82..f3ea92dcb0 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -95,8 +95,11 @@ typedef struct vhd_footer { QemuUUID uuid; =20 uint8_t in_saved_state; + uint8_t reserved[427]; } QEMU_PACKED VHDFooter; =20 +QEMU_BUILD_BUG_ON(sizeof(VHDFooter) !=3D 512); + typedef struct vhd_dyndisk_header { char magic[8]; /* "cxsparse" */ =20 @@ -134,7 +137,7 @@ QEMU_BUILD_BUG_ON(sizeof(VHDDynDiskHeader) !=3D 1024); =20 typedef struct BDRVVPCState { CoMutex lock; - uint8_t footer_buf[HEADER_SIZE]; + VHDFooter footer; uint64_t free_data_block_offset; int max_table_entries; uint32_t *pagetable; @@ -250,13 +253,13 @@ static int vpc_open(BlockDriverState *bs, QDict *opti= ons, int flags, goto fail; } =20 - ret =3D bdrv_pread(bs->file, 0, s->footer_buf, HEADER_SIZE); + ret =3D bdrv_pread(bs->file, 0, &s->footer, HEADER_SIZE); if (ret < 0) { error_setg(errp, "Unable to read VHD header"); goto fail; } =20 - footer =3D (VHDFooter *) s->footer_buf; + footer =3D &s->footer; if (strncmp(footer->creator, "conectix", 8)) { int64_t offset =3D bdrv_getlength(bs->file->bs); if (offset < 0) { @@ -270,7 +273,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, } =20 /* If a fixed disk, the footer is found only at the end of the fil= e */ - ret =3D bdrv_pread(bs->file, offset-HEADER_SIZE, s->footer_buf, + ret =3D bdrv_pread(bs->file, offset - HEADER_SIZE, footer, HEADER_SIZE); if (ret < 0) { goto fail; @@ -285,7 +288,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, =20 checksum =3D be32_to_cpu(footer->checksum); footer->checksum =3D 0; - if (vpc_checksum(s->footer_buf, HEADER_SIZE) !=3D checksum) { + if (vpc_checksum(footer, HEADER_SIZE) !=3D checksum) { error_setg(errp, "Incorrect header checksum"); ret =3D -EINVAL; goto fail; @@ -535,7 +538,7 @@ static int rewrite_footer(BlockDriverState *bs) BDRVVPCState *s =3D bs->opaque; int64_t offset =3D s->free_data_block_offset; =20 - ret =3D bdrv_pwrite_sync(bs->file, offset, s->footer_buf, HEADER_SIZE); + ret =3D bdrv_pwrite_sync(bs->file, offset, &s->footer, HEADER_SIZE); if (ret < 0) return ret; =20 @@ -598,9 +601,8 @@ fail: static int vpc_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) { BDRVVPCState *s =3D (BDRVVPCState *)bs->opaque; - VHDFooter *footer =3D (VHDFooter *) s->footer_buf; =20 - if (be32_to_cpu(footer->type) !=3D VHD_FIXED) { + if (be32_to_cpu(s->footer.type) !=3D VHD_FIXED) { bdi->cluster_size =3D s->block_size; } =20 @@ -616,10 +618,9 @@ vpc_co_preadv(BlockDriverState *bs, uint64_t offset, u= int64_t bytes, int64_t image_offset; int64_t n_bytes; int64_t bytes_done =3D 0; - VHDFooter *footer =3D (VHDFooter *) s->footer_buf; QEMUIOVector local_qiov; =20 - if (be32_to_cpu(footer->type) =3D=3D VHD_FIXED) { + if (be32_to_cpu(s->footer.type) =3D=3D VHD_FIXED) { return bdrv_co_preadv(bs->file, offset, bytes, qiov, 0); } =20 @@ -667,10 +668,9 @@ vpc_co_pwritev(BlockDriverState *bs, uint64_t offset, = uint64_t bytes, int64_t n_bytes; int64_t bytes_done =3D 0; int ret =3D 0; - VHDFooter *footer =3D (VHDFooter *) s->footer_buf; QEMUIOVector local_qiov; =20 - if (be32_to_cpu(footer->type) =3D=3D VHD_FIXED) { + if (be32_to_cpu(s->footer.type) =3D=3D VHD_FIXED) { return bdrv_co_pwritev(bs->file, offset, bytes, qiov, 0); } =20 @@ -724,13 +724,12 @@ static int coroutine_fn vpc_co_block_status(BlockDriv= erState *bs, BlockDriverState **file) { BDRVVPCState *s =3D bs->opaque; - VHDFooter *footer =3D (VHDFooter*) s->footer_buf; int64_t image_offset; bool allocated; int ret; int64_t n; =20 - if (be32_to_cpu(footer->type) =3D=3D VHD_FIXED) { + if (be32_to_cpu(s->footer.type) =3D=3D VHD_FIXED) { *pnum =3D bytes; *map =3D offset; *file =3D bs->file->bs; @@ -973,8 +972,7 @@ static int coroutine_fn vpc_co_create(BlockdevCreateOpt= ions *opts, BlockBackend *blk =3D NULL; BlockDriverState *bs =3D NULL; =20 - uint8_t footer_buf[HEADER_SIZE]; - VHDFooter *footer =3D (VHDFooter *)footer_buf; + VHDFooter footer; uint16_t cyls =3D 0; uint8_t heads =3D 0; uint8_t secs_per_cyl =3D 0; @@ -1037,48 +1035,48 @@ static int coroutine_fn vpc_co_create(BlockdevCreat= eOptions *opts, } =20 /* Prepare the Hard Disk Footer */ - memset(footer_buf, 0, HEADER_SIZE); + memset(&footer, 0, HEADER_SIZE); =20 - memcpy(footer->creator, "conectix", 8); + memcpy(footer.creator, "conectix", 8); if (vpc_opts->force_size) { - memcpy(footer->creator_app, "qem2", 4); + memcpy(footer.creator_app, "qem2", 4); } else { - memcpy(footer->creator_app, "qemu", 4); + memcpy(footer.creator_app, "qemu", 4); } - memcpy(footer->creator_os, "Wi2k", 4); + memcpy(footer.creator_os, "Wi2k", 4); =20 - footer->features =3D cpu_to_be32(0x02); - footer->version =3D cpu_to_be32(0x00010000); + footer.features =3D cpu_to_be32(0x02); + footer.version =3D cpu_to_be32(0x00010000); if (disk_type =3D=3D VHD_DYNAMIC) { - footer->data_offset =3D cpu_to_be64(HEADER_SIZE); + footer.data_offset =3D cpu_to_be64(HEADER_SIZE); } else { - footer->data_offset =3D cpu_to_be64(0xFFFFFFFFFFFFFFFFULL); + footer.data_offset =3D cpu_to_be64(0xFFFFFFFFFFFFFFFFULL); } - footer->timestamp =3D cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE); + footer.timestamp =3D cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE); =20 /* Version of Virtual PC 2007 */ - footer->major =3D cpu_to_be16(0x0005); - footer->minor =3D cpu_to_be16(0x0003); - footer->orig_size =3D cpu_to_be64(total_size); - footer->current_size =3D cpu_to_be64(total_size); - footer->cyls =3D cpu_to_be16(cyls); - footer->heads =3D heads; - footer->secs_per_cyl =3D secs_per_cyl; + footer.major =3D cpu_to_be16(0x0005); + footer.minor =3D cpu_to_be16(0x0003); + footer.orig_size =3D cpu_to_be64(total_size); + footer.current_size =3D cpu_to_be64(total_size); + footer.cyls =3D cpu_to_be16(cyls); + footer.heads =3D heads; + footer.secs_per_cyl =3D secs_per_cyl; =20 - footer->type =3D cpu_to_be32(disk_type); + footer.type =3D cpu_to_be32(disk_type); =20 qemu_uuid_generate(&uuid); - footer->uuid =3D uuid; + footer.uuid =3D uuid; =20 - footer->checksum =3D cpu_to_be32(vpc_checksum(footer_buf, HEADER_SIZE)= ); + footer.checksum =3D cpu_to_be32(vpc_checksum(&footer, HEADER_SIZE)); =20 if (disk_type =3D=3D VHD_DYNAMIC) { - ret =3D create_dynamic_disk(blk, footer_buf, total_sectors); + ret =3D create_dynamic_disk(blk, (uint8_t *)&footer, total_sectors= ); if (ret < 0) { error_setg(errp, "Unable to create or write VHD header"); } } else { - ret =3D create_fixed_disk(blk, footer_buf, total_size, errp); + ret =3D create_fixed_disk(blk, (uint8_t *)&footer, total_size, err= p); } =20 out: @@ -1172,9 +1170,8 @@ fail: static int vpc_has_zero_init(BlockDriverState *bs) { BDRVVPCState *s =3D bs->opaque; - VHDFooter *footer =3D (VHDFooter *) s->footer_buf; =20 - if (be32_to_cpu(footer->type) =3D=3D VHD_FIXED) { + if (be32_to_cpu(s->footer.type) =3D=3D VHD_FIXED) { return bdrv_has_zero_init(bs->file->bs); } else { return 1; --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608227773; cv=none; d=zohomail.com; s=zohoarc; b=Tnxx2e5J2/Zs1ASAF0IprNrju4IOI/dYsPZhvKBJzvArLCTfM726pNYwxkbqR1MmPw3kUcwIS8WH6IpQbVnwIJRyWNOLzfAJcNeUy8WOlODhbev5w30zcQlj6QYsiWLSDmvvoMRQuSeBP6eU7e7le9ypvQRNF7tU29g0A3rhvY0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608227773; h=Content-Type: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; bh=edsb0IsHahQxKHu3tHxbObtbRY6hDPgtbxfSrWIXTyY=; b=duUAuVAC4ml4P2sF6W0rkLe5N8ZCZRtIdFXBms4XpASlDGviwGsC5NPTSti6TMPAbnB6GELxPGPKczRn/ZcRsdiCv4KilzXJJAGHpi6OJURawgCYGr5G8iEFmq9WfXiyUDlg7uUXU28yYuKILV5fh91ZaQKQvKvGIjzfJpuNV4U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608227773839961.5489153709642; Thu, 17 Dec 2020 09:56:13 -0800 (PST) Received: from localhost ([::1]:52594 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw2b-0004xc-0K for importer@patchew.org; Thu, 17 Dec 2020 11:22:09 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52938) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0k-0002EX-W8 for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:52584) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0g-0005Oi-1e for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:14 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-544-mt3oR1vZO_CdbKJbLVeE4w-1; Thu, 17 Dec 2020 11:20:07 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 98AB58042AC; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 677DF62AF7; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 854D411275E4; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=edsb0IsHahQxKHu3tHxbObtbRY6hDPgtbxfSrWIXTyY=; b=KMOeppy71H2jCOx+ZX6xZtzOh5X2SyTqp9m6xuQ/ujmG+Ynb6ZnG5X9JwBxLDl6QjCpA7I I0uLL2Jp6pMCpnDafWacB9xVSs4xxMKwf8IPM9+CDxiEB+MhtxE1GjaN2yZ0ueg0bubEWg xnpScCsX9UP80zN26g8Dl+5gqlC5ypg= X-MC-Unique: mt3oR1vZO_CdbKJbLVeE4w-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 8/9] block/vpc: Pass footer buffers as VHDFooter * instead of uint8_t * Date: Thu, 17 Dec 2020 17:20:02 +0100 Message-Id: <20201217162003.1102738-9-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index f3ea92dcb0..aac13788df 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -819,7 +819,7 @@ static int calculate_geometry(int64_t total_sectors, ui= nt16_t *cyls, return 0; } =20 -static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf, +static int create_dynamic_disk(BlockBackend *blk, VHDFooter *footer, int64_t total_sectors) { VHDDynDiskHeader dyndisk_header; @@ -833,13 +833,13 @@ static int create_dynamic_disk(BlockBackend *blk, uin= t8_t *buf, block_size =3D 0x200000; num_bat_entries =3D DIV_ROUND_UP(total_sectors, block_size / 512); =20 - ret =3D blk_pwrite(blk, offset, buf, HEADER_SIZE, 0); + ret =3D blk_pwrite(blk, offset, footer, HEADER_SIZE, 0); if (ret < 0) { goto fail; } =20 offset =3D 1536 + ((num_bat_entries * 4 + 511) & ~511); - ret =3D blk_pwrite(blk, offset, buf, HEADER_SIZE, 0); + ret =3D blk_pwrite(blk, offset, footer, HEADER_SIZE, 0); if (ret < 0) { goto fail; } @@ -887,7 +887,7 @@ static int create_dynamic_disk(BlockBackend *blk, uint8= _t *buf, return ret; } =20 -static int create_fixed_disk(BlockBackend *blk, uint8_t *buf, +static int create_fixed_disk(BlockBackend *blk, VHDFooter *footer, int64_t total_size, Error **errp) { int ret; @@ -900,7 +900,7 @@ static int create_fixed_disk(BlockBackend *blk, uint8_t= *buf, return ret; } =20 - ret =3D blk_pwrite(blk, total_size - HEADER_SIZE, buf, HEADER_SIZE, 0); + ret =3D blk_pwrite(blk, total_size - HEADER_SIZE, footer, HEADER_SIZE,= 0); if (ret < 0) { error_setg_errno(errp, -ret, "Unable to write VHD header"); return ret; @@ -1071,12 +1071,12 @@ static int coroutine_fn vpc_co_create(BlockdevCreat= eOptions *opts, footer.checksum =3D cpu_to_be32(vpc_checksum(&footer, HEADER_SIZE)); =20 if (disk_type =3D=3D VHD_DYNAMIC) { - ret =3D create_dynamic_disk(blk, (uint8_t *)&footer, total_sectors= ); + ret =3D create_dynamic_disk(blk, &footer, total_sectors); if (ret < 0) { error_setg(errp, "Unable to create or write VHD header"); } } else { - ret =3D create_fixed_disk(blk, (uint8_t *)&footer, total_size, err= p); + ret =3D create_fixed_disk(blk, &footer, total_size, errp); } =20 out: --=20 2.26.2 From nobody Sat May 18 22:15:04 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.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=1608248018; cv=none; d=zohomail.com; s=zohoarc; b=arQMN0RvOdNrPtWyG/cuBLDfkiIfRwnig5yZP7biJUOxYYu9vQfGccV+z1NBTdZkYR1F0RvjjRbtBxdvV1PlhjjWdlLCq3d+Ps8biYb+6ILu87UNCV7vuV+OD/aL/xT+xP+HbNTKRUDrBGlXPBL9BWSb7BRrJJGx5ItZKkzKoKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1608248018; h=Content-Type: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; bh=/4oFsvAyawICVJ675Gktd9otrVuNUujzqwmrptFhDsA=; b=HlrlvezO7fGddYTo8S2wuSjERuUtONcW4Q+IU5CYCzrOluKqmqGF3LAQaZtkNdf9NrPcNbD4/Qm+rYXkt9Cl90D9IRTOn42LBjWG6Cz5sSpf3MJ8c0ABBgFHHuCSBHA9fBYknGC0JEOETzSSAoD81/R5twexbhmgkAzxmR+4/KI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.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 1608248018676694.3347576757711; Thu, 17 Dec 2020 15:33:38 -0800 (PST) Received: from localhost ([::1]:59570 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kpw4z-0007si-8s for importer@patchew.org; Thu, 17 Dec 2020 11:24:37 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52980) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kpw0m-0002Eh-3M for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:58281) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kpw0g-0005Om-Cj for qemu-devel@nongnu.org; Thu, 17 Dec 2020 11:20:15 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-464-18eYt8G4PG6bR9iBO3YlQw-1; Thu, 17 Dec 2020 11:20:07 -0500 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 mimecast-mx01.redhat.com (Postfix) with ESMTPS id C39C8801817; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6B74010016FE; Thu, 17 Dec 2020 16:20:06 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 89A1611275EC; Thu, 17 Dec 2020 17:20:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608222009; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/4oFsvAyawICVJ675Gktd9otrVuNUujzqwmrptFhDsA=; b=Z/4bshN0YLAp81dwCKdSFr/ILFkkVghgmf0kBaXQ17D/9TMKeu/JjpsIikaRviEOhx+PuV pePzvUCTVb4d4MrfPery3zBwEodrznA9+QsTTwkGGUQmG8JXM/SsI2hMAu+itesIQgdRLI bZ6ebHSwYpxc53VvjmDEEvViY/efQhg= X-MC-Unique: 18eYt8G4PG6bR9iBO3YlQw-1 From: Markus Armbruster To: qemu-devel@nongnu.org Subject: [PATCH 9/9] block/vpc: Use sizeof() instead of HEADER_SIZE for footer size Date: Thu, 17 Dec 2020 17:20:03 +0100 Message-Id: <20201217162003.1102738-10-armbru@redhat.com> In-Reply-To: <20201217162003.1102738-1-armbru@redhat.com> References: <20201217162003.1102738-1-armbru@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.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; Received-SPF: pass client-ip=63.128.21.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, mrezanin@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Signed-off-by: Markus Armbruster Reviewed-by: Max Reitz --- block/vpc.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/block/vpc.c b/block/vpc.c index aac13788df..17a705b482 100644 --- a/block/vpc.c +++ b/block/vpc.c @@ -39,8 +39,6 @@ =20 /**************************************************************/ =20 -#define HEADER_SIZE 512 - //#define CACHE =20 enum vhd_type { @@ -253,7 +251,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, goto fail; } =20 - ret =3D bdrv_pread(bs->file, 0, &s->footer, HEADER_SIZE); + ret =3D bdrv_pread(bs->file, 0, &s->footer, sizeof(s->footer)); if (ret < 0) { error_setg(errp, "Unable to read VHD header"); goto fail; @@ -266,15 +264,15 @@ static int vpc_open(BlockDriverState *bs, QDict *opti= ons, int flags, ret =3D offset; error_setg(errp, "Invalid file size"); goto fail; - } else if (offset < HEADER_SIZE) { + } else if (offset < sizeof(*footer)) { ret =3D -EINVAL; error_setg(errp, "File too small for a VHD header"); goto fail; } =20 /* If a fixed disk, the footer is found only at the end of the fil= e */ - ret =3D bdrv_pread(bs->file, offset - HEADER_SIZE, footer, - HEADER_SIZE); + ret =3D bdrv_pread(bs->file, offset - sizeof(*footer), + footer, sizeof(*footer)); if (ret < 0) { goto fail; } @@ -288,7 +286,7 @@ static int vpc_open(BlockDriverState *bs, QDict *option= s, int flags, =20 checksum =3D be32_to_cpu(footer->checksum); footer->checksum =3D 0; - if (vpc_checksum(footer, HEADER_SIZE) !=3D checksum) { + if (vpc_checksum(footer, sizeof(*footer)) !=3D checksum) { error_setg(errp, "Incorrect header checksum"); ret =3D -EINVAL; goto fail; @@ -538,7 +536,7 @@ static int rewrite_footer(BlockDriverState *bs) BDRVVPCState *s =3D bs->opaque; int64_t offset =3D s->free_data_block_offset; =20 - ret =3D bdrv_pwrite_sync(bs->file, offset, &s->footer, HEADER_SIZE); + ret =3D bdrv_pwrite_sync(bs->file, offset, &s->footer, sizeof(s->foote= r)); if (ret < 0) return ret; =20 @@ -833,13 +831,13 @@ static int create_dynamic_disk(BlockBackend *blk, VHD= Footer *footer, block_size =3D 0x200000; num_bat_entries =3D DIV_ROUND_UP(total_sectors, block_size / 512); =20 - ret =3D blk_pwrite(blk, offset, footer, HEADER_SIZE, 0); + ret =3D blk_pwrite(blk, offset, footer, sizeof(*footer), 0); if (ret < 0) { goto fail; } =20 offset =3D 1536 + ((num_bat_entries * 4 + 511) & ~511); - ret =3D blk_pwrite(blk, offset, footer, HEADER_SIZE, 0); + ret =3D blk_pwrite(blk, offset, footer, sizeof(*footer), 0); if (ret < 0) { goto fail; } @@ -893,14 +891,15 @@ static int create_fixed_disk(BlockBackend *blk, VHDFo= oter *footer, int ret; =20 /* Add footer to total size */ - total_size +=3D HEADER_SIZE; + total_size +=3D sizeof(*footer); =20 ret =3D blk_truncate(blk, total_size, false, PREALLOC_MODE_OFF, 0, err= p); if (ret < 0) { return ret; } =20 - ret =3D blk_pwrite(blk, total_size - HEADER_SIZE, footer, HEADER_SIZE,= 0); + ret =3D blk_pwrite(blk, total_size - sizeof(*footer), + footer, sizeof(*footer), 0); if (ret < 0) { error_setg_errno(errp, -ret, "Unable to write VHD header"); return ret; @@ -1035,7 +1034,7 @@ static int coroutine_fn vpc_co_create(BlockdevCreateO= ptions *opts, } =20 /* Prepare the Hard Disk Footer */ - memset(&footer, 0, HEADER_SIZE); + memset(&footer, 0, sizeof(footer)); =20 memcpy(footer.creator, "conectix", 8); if (vpc_opts->force_size) { @@ -1048,7 +1047,7 @@ static int coroutine_fn vpc_co_create(BlockdevCreateO= ptions *opts, footer.features =3D cpu_to_be32(0x02); footer.version =3D cpu_to_be32(0x00010000); if (disk_type =3D=3D VHD_DYNAMIC) { - footer.data_offset =3D cpu_to_be64(HEADER_SIZE); + footer.data_offset =3D cpu_to_be64(sizeof(footer)); } else { footer.data_offset =3D cpu_to_be64(0xFFFFFFFFFFFFFFFFULL); } @@ -1068,7 +1067,7 @@ static int coroutine_fn vpc_co_create(BlockdevCreateO= ptions *opts, qemu_uuid_generate(&uuid); footer.uuid =3D uuid; =20 - footer.checksum =3D cpu_to_be32(vpc_checksum(&footer, HEADER_SIZE)); + footer.checksum =3D cpu_to_be32(vpc_checksum(&footer, sizeof(footer))); =20 if (disk_type =3D=3D VHD_DYNAMIC) { ret =3D create_dynamic_disk(blk, &footer, total_sectors); --=20 2.26.2