From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org
Subject: [PULL 03/36] qcow2: Fix alignment checks in encrypted images
Date: Tue, 18 Feb 2020 15:06:49 +0100 [thread overview]
Message-ID: <20200218140722.23876-4-kwolf@redhat.com> (raw)
In-Reply-To: <20200218140722.23876-1-kwolf@redhat.com>
From: Alberto Garcia <berto@igalia.com>
I/O requests to encrypted media should be aligned to the sector size
used by the underlying encryption method, not to BDRV_SECTOR_SIZE.
Fortunately this doesn't break anything at the moment because
both existing QCRYPTO_BLOCK_*_SECTOR_SIZE have the same value as
BDRV_SECTOR_SIZE.
The checks in qcow2_co_preadv_encrypted() are also unnecessary because
they are repeated immediately afterwards in qcow2_co_encdec().
Signed-off-by: Alberto Garcia <berto@igalia.com>
Message-Id: <20200213171646.15876-1-berto@igalia.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block/qcow2-threads.c | 12 ++++++++----
block/qcow2.c | 2 --
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/block/qcow2-threads.c b/block/qcow2-threads.c
index 8f5a0d1ebe..77bb578cdf 100644
--- a/block/qcow2-threads.c
+++ b/block/qcow2-threads.c
@@ -246,12 +246,15 @@ qcow2_co_encdec(BlockDriverState *bs, uint64_t host_offset,
.len = len,
.func = func,
};
+ uint64_t sector_size;
- assert(QEMU_IS_ALIGNED(guest_offset, BDRV_SECTOR_SIZE));
- assert(QEMU_IS_ALIGNED(host_offset, BDRV_SECTOR_SIZE));
- assert(QEMU_IS_ALIGNED(len, BDRV_SECTOR_SIZE));
assert(s->crypto);
+ sector_size = qcrypto_block_get_sector_size(s->crypto);
+ assert(QEMU_IS_ALIGNED(guest_offset, sector_size));
+ assert(QEMU_IS_ALIGNED(host_offset, sector_size));
+ assert(QEMU_IS_ALIGNED(len, sector_size));
+
return len == 0 ? 0 : qcow2_co_process(bs, qcow2_encdec_pool_func, &arg);
}
@@ -270,7 +273,8 @@ qcow2_co_encdec(BlockDriverState *bs, uint64_t host_offset,
* will be written to the underlying storage device at
* @host_offset
*
- * @len - length of the buffer (must be a BDRV_SECTOR_SIZE multiple)
+ * @len - length of the buffer (must be a multiple of the encryption
+ * sector size)
*
* Depending on the encryption method, @host_offset and/or @guest_offset
* may be used for generating the initialization vector for
diff --git a/block/qcow2.c b/block/qcow2.c
index ef96606f8d..8dcee5efec 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -2068,8 +2068,6 @@ qcow2_co_preadv_encrypted(BlockDriverState *bs,
goto fail;
}
- assert(QEMU_IS_ALIGNED(offset, BDRV_SECTOR_SIZE));
- assert(QEMU_IS_ALIGNED(bytes, BDRV_SECTOR_SIZE));
if (qcow2_co_decrypt(bs,
file_cluster_offset + offset_into_cluster(s, offset),
offset, buf, bytes) < 0)
--
2.20.1
next prev parent reply other threads:[~2020-02-18 14:11 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-18 14:06 [PULL 00/36] Block layer patches Kevin Wolf
2020-02-18 14:06 ` [PULL 01/36] mirror: Store MirrorOp.co for debuggability Kevin Wolf
2020-02-18 14:06 ` [PULL 02/36] mirror: Don't let an operation wait for itself Kevin Wolf
2020-02-18 14:06 ` Kevin Wolf [this message]
2020-02-18 14:06 ` [PULL 04/36] block/vvfat: Do not unref qcow on closing backing bdrv Kevin Wolf
2020-02-18 14:06 ` [PULL 05/36] qcow2: update_refcount(): Reset old_table_index after qcow2_cache_put() Kevin Wolf
2020-02-18 14:06 ` [PULL 06/36] qcow2: Fix qcow2_alloc_cluster_abort() for external data file Kevin Wolf
2020-02-18 14:06 ` [PULL 07/36] iotests: Test copy offloading with " Kevin Wolf
2020-02-18 14:06 ` [PULL 08/36] block/qcow2-bitmap: Remove unneeded variable assignment Kevin Wolf
2020-02-18 14:06 ` [PULL 09/36] qapi: Document meaning of 'ignore' BlockdevOnError for jobs Kevin Wolf
2020-02-18 14:06 ` [PULL 10/36] commit: Remove unused bytes_written Kevin Wolf
2020-02-18 14:06 ` [PULL 11/36] commit: Fix argument order for block_job_error_action() Kevin Wolf
2020-02-18 14:06 ` [PULL 12/36] commit: Inline commit_populate() Kevin Wolf
2020-02-18 14:06 ` [PULL 13/36] commit: Fix is_read for block_job_error_action() Kevin Wolf
2020-02-18 14:07 ` [PULL 14/36] commit: Expose on-error option in QMP Kevin Wolf
2020-02-18 14:07 ` [PULL 15/36] iotests: Test error handling policies with block-commit Kevin Wolf
2020-02-18 14:07 ` [PULL 16/36] block: Remove superfluous semicolons Kevin Wolf
2020-02-18 14:07 ` [PULL 17/36] block/io_uring: Remove superfluous semicolon Kevin Wolf
2020-02-18 14:07 ` [PULL 18/36] blockdev: Allow external snapshots everywhere Kevin Wolf
2020-02-18 14:07 ` [PULL 19/36] blockdev: Allow resizing everywhere Kevin Wolf
2020-02-18 14:07 ` [PULL 20/36] block: Drop bdrv_is_first_non_filter() Kevin Wolf
2020-02-18 14:07 ` [PULL 21/36] iotests: Let 041 use -blockdev for quorum children Kevin Wolf
2020-02-18 14:07 ` [PULL 22/36] quorum: Fix child permissions Kevin Wolf
2020-02-18 14:07 ` [PULL 23/36] block: Add bdrv_recurse_can_replace() Kevin Wolf
2020-02-18 14:07 ` [PULL 24/36] blkverify: Implement .bdrv_recurse_can_replace() Kevin Wolf
2020-02-18 14:07 ` [PULL 25/36] quorum: " Kevin Wolf
2020-02-18 14:07 ` [PULL 26/36] block: Use bdrv_recurse_can_replace() Kevin Wolf
2020-02-18 14:07 ` [PULL 27/36] block: Remove bdrv_recurse_is_first_non_filter() Kevin Wolf
2020-02-18 14:07 ` [PULL 28/36] mirror: Double-check immediately before replacing Kevin Wolf
2020-02-18 14:07 ` [PULL 29/36] quorum: Stop marking it as a filter Kevin Wolf
2020-02-18 14:07 ` [PULL 30/36] iotests: Use complete_and_wait() in 155 Kevin Wolf
2020-02-18 14:07 ` [PULL 31/36] iotests: Add VM.assert_block_path() Kevin Wolf
2020-02-18 14:07 ` [PULL 32/36] iotests/041: Drop superfluous shutdowns Kevin Wolf
2020-02-18 14:07 ` [PULL 33/36] iotests: Resolve TODOs in 041 Kevin Wolf
2020-02-18 14:07 ` [PULL 34/36] iotests: Use self.image_len in TestRepairQuorum Kevin Wolf
2020-02-18 14:07 ` [PULL 35/36] iotests: Add tests for invalid Quorum @replaces Kevin Wolf
2020-02-18 14:07 ` [PULL 36/36] iotests: Check that @replaces can replace filters Kevin Wolf
2020-02-20 14:04 ` [PULL 00/36] Block layer patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200218140722.23876-4-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).