From: Anthony Liguori <anthony@codemonkey.ws>
To: Eric Blake <eblake@redhat.com>, libvir-list@redhat.com
Cc: pbonzini@redhat.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] rng: restrict passthrough names to known-good files
Date: Mon, 04 Mar 2013 17:31:19 -0600 [thread overview]
Message-ID: <87sj4ayc6w.fsf@codemonkey.ws> (raw)
In-Reply-To: <1362437363-27570-1-git-send-email-eblake@redhat.com>
Eric Blake <eblake@redhat.com> writes:
> There is some controversy[1] on the qemu list on whether qemu should
> have ever allowed arbitrary file name passthrough, or whether it
> should be restricted to JUST /dev/random and /dev/hwrng. It is
> always easier to add support for additional filenames than it is
> to remove support for something once released, so this patch
> restricts libvirt 1.0.3 (where the virtio-random backend was first
> supported) to just the two uncontroversial names, letting us defer
> to a later date any decision on whether supporting arbitrary files
> makes sense. Additionally, since qemu 1.4 does NOT support
> /dev/fdset/nnn fd passthrough for the backend, limiting to just
> two known names means that we don't get tempted to try fd
> passthrough where it won't work.
Acked-by: Anthony Liguori <aliguori@us.ibm.com>
Regards,
Anthony Liguori
>
> [1]https://lists.gnu.org/archive/html/qemu-devel/2013-03/threads.html#00023
>
> * src/conf/domain_conf.c (virDomainRNGDefParseXML): Only allow
> /dev/random and /dev/hwrng.
> * docs/schemas/domaincommon.rng: Flag invalid files.
> * docs/formatdomain.html.in (elementsRng): Document this.
> * tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.args:
> Update test to match.
> * tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.xml:
> Likewise.
> ---
>
> This needs to be acked before libvirt 1.0.3; otherwise we are
> stuck supporting arbitrary name passthrough.
>
> docs/formatdomain.html.in | 3 ++-
> docs/schemas/domaincommon.rng | 5 ++++-
> src/conf/domain_conf.c | 7 +++++++
> tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.args | 2 +-
> tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.xml | 2 +-
> 5 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 1835b39..4cafc92 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -4310,7 +4310,8 @@ qemu-kvm -net nic,model=? /dev/null
> <code>model</code> attribute. Supported source models are:
> </p>
> <ul>
> - <li>'random' — /dev/random (default) or similar device as source</li>
> + <li>'random' — /dev/random (default) or /dev/hwrng
> + device as source (for now, no other sources are permitted)</li>
> <li>'egd' — a EGD protocol backend</li>
> </ul>
> </dd>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index e7231cc..4b60885 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -3511,7 +3511,10 @@
> <attribute name="model">
> <value>random</value>
> </attribute>
> - <ref name="filePath"/>
> + <choice>
> + <value>/dev/random</value>
> + <value>/dev/hwrng</value>
> + </choice>
> </group>
> <group>
> <attribute name="model">
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 995cf0c..9c96cf1 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -7423,6 +7423,13 @@ virDomainRNGDefParseXML(const xmlNodePtr node,
> switch ((enum virDomainRNGBackend) def->backend) {
> case VIR_DOMAIN_RNG_BACKEND_RANDOM:
> def->source.file = virXPathString("string(./backend)", ctxt);
> + if (STRNEQ(def->source.file, "/dev/random") &&
> + STRNEQ(def->source.file, "/dev/hwrng")) {
> + virReportError(VIR_ERR_XML_ERROR,
> + _("file '%s' is not a supported random source"),
> + def->source.file);
> + goto error;
> + }
> break;
>
> case VIR_DOMAIN_RNG_BACKEND_EGD:
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.args b/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.args
> index ad27132..7ab9dbc 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.args
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.args
> @@ -2,5 +2,5 @@ LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu \
> -S -M pc -m 214 -smp 1 -nographic -nodefaults \
> -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -usb \
> -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 \
> --object 'rng-random,id=rng0,filename=/test/ph<ile' \
> +-object rng-random,id=rng0,filename=/dev/hwrng \
> -device virtio-rng-pci,rng=rng0,bus=pci.0,addr=0x4
> diff --git a/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.xml b/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.xml
> index 0658f4b..1e2c4be 100644
> --- a/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.xml
> +++ b/tests/qemuxml2argvdata/qemuxml2argv-virtio-rng-random.xml
> @@ -17,7 +17,7 @@
> <controller type='usb' index='0'/>
> <memballoon model='virtio'/>
> <rng model='virtio'>
> - <backend model='random'>/test/ph<ile</backend>
> + <backend model='random'>/dev/hwrng</backend>
> </rng>
> </devices>
> </domain>
> --
> 1.8.1.4
next prev parent reply other threads:[~2013-03-04 23:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-04 22:49 [Qemu-devel] [PATCH] rng: restrict passthrough names to known-good files Eric Blake
2013-03-04 23:31 ` Anthony Liguori [this message]
2013-03-05 0:46 ` Eric Blake
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=87sj4ayc6w.fsf@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=eblake@redhat.com \
--cc=libvir-list@redhat.com \
--cc=pbonzini@redhat.com \
--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).