From: Fam Zheng <famz@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH] blockdev: Refuse to open encrypted image unless paused
Date: Fri, 14 Mar 2014 09:13:30 +0800 [thread overview]
Message-ID: <20140314011330.GB31322@T430.nay.redhat.com> (raw)
In-Reply-To: <8761niw7qt.fsf@blackfin.pond.sub.org>
On Thu, 03/13 14:25, Markus Armbruster wrote:
> Fam Zheng <famz@redhat.com> writes:
>
> > On Wed, 03/12 18:00, Markus Armbruster wrote:
> >> Opening an encrypted image takes an additional step: setting the key.
> >> Between open and the key set, the image must not be used.
> >>
> >> We have some protection against accidental use in place: you can't
> >> unpause a guest while we're missing keys. You can, however, hot-plug
> >> block devices lacking keys into a running guest just fine, or insert
> >> media lacking keys. In the latter case, notifying the guest of the
> >> insert is delayed until the key is set, which may suffice to protect
> >> at least some guests in common usage.
> >>
> >> This patch makes the protection apply in more cases, in a rather
> >> heavy-handed way: it doesn't let you open encrypted images unless
> >> we're in a paused state.
> >>
> >> It doesn't extend the protection to users other than the guest (block
> >> jobs?). Use of runstate_check() from block.c is disgusting. Best I
> >> can do right now.
> >>
> >> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> >> ---
> >> block.c | 8 +++++++-
> >> stubs/Makefile.objs | 1 +
> >> stubs/runstate-check.c | 6 ++++++
> >> 3 files changed, 14 insertions(+), 1 deletion(-)
> >> create mode 100644 stubs/runstate-check.c
> >>
> >> diff --git a/block.c b/block.c
> >> index f1ef4b0..7604881 100644
> >> --- a/block.c
> >> +++ b/block.c
> >> @@ -1388,12 +1388,18 @@ done:
> >> ret = -EINVAL;
> >> goto close_and_fail;
> >> }
> >> - QDECREF(options);
> >>
> >> if (!bdrv_key_required(bs)) {
> >> bdrv_dev_change_media_cb(bs, true);
> >> + } else if (!runstate_check(RUN_STATE_PRELAUNCH)
> >> + && !runstate_check(RUN_STATE_PAUSED)) { /* HACK */
> >> + error_setg(errp,
> >> + "Guest must be stopped for opening of encrypted image");
> >
> > Changing error message here breaks qemu-iotests 087.
>
> Crap. I'm on vacation until Monday, just checking in to shepherd this
> patch...
>
> On *master*, "make check-block" reports
>
> Not run: 016 052 059 064 070 077
> Failures: 085 087
> Failed 2 of 34 tests
>
I didn't run it from "make check-block" (Stefan sent a patch to remove 085 and
087 from check-block.
Running command: TEST_DIR=/tmp/qemu-iotests QEMU_PROG=../../x86_64-softmmu/qemu-system-x86_64 QEMU_IMG_PROG=../../qemu-img QEMU_IO_PROG=../../qemu-io QEMU_NBD_PROG=../../qemu-nbd ./check -qcow2 -o "" 087
QEMU -- ../../x86_64-softmmu/qemu-system-x86_64
QEMU_IMG -- ../../qemu-img
QEMU_IO -- ../../qemu-io
QEMU_NBD -- ../../qemu-nbd
IMGFMT -- qcow2 (compat=1.1)
IMGPROTO -- file
PLATFORM -- Linux/x86_64 T430 3.13.6-1-ARCH
SOCKET_SCM_HELPER --
087 0s ... - output mismatch (see 087.out.bad)
--- 087.out 2014-03-12 09:28:04.167060760 +0800
+++ 087.out.bad 2014-03-14 09:11:59.770326144 +0800
@@ -31,7 +31,7 @@
Testing:
QMP_VERSION
{"return": {}}
-{"error": {"class": "GenericError", "desc": "blockdev-add doesn't support encrypted devices"}}
+{"error": {"class": "GenericError", "desc": "could not open disk image disk: Guest must be stopped for opening of encrypted image"}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN"}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "DEVICE_TRAY_MOVED", "data": {"device": "ide1-cd0", "tray-open": true}}
Failures: 087
Failed 1 of 1 tests
Thanks,
Fam
next prev parent reply other threads:[~2014-03-14 1:13 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-12 17:00 [Qemu-devel] [PATCH] blockdev: Refuse to open encrypted image unless paused Markus Armbruster
2014-03-12 17:19 ` Eric Blake
2014-03-13 9:26 ` Fam Zheng
2014-03-13 13:25 ` Markus Armbruster
2014-03-14 1:13 ` Fam Zheng [this message]
2014-03-14 8:16 ` Markus Armbruster
2014-03-13 10:43 ` Paolo Bonzini
2014-03-13 13:18 ` Markus Armbruster
2014-03-13 14:14 ` Paolo Bonzini
2014-03-13 15:00 ` Markus Armbruster
2014-03-13 15:08 ` Paolo Bonzini
2014-03-14 8:15 ` Markus Armbruster
2014-03-13 13:27 ` Eric Blake
2014-03-13 14:19 ` Paolo Bonzini
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=20140314011330.GB31322@T430.nay.redhat.com \
--to=famz@redhat.com \
--cc=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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).