From: Max Reitz <mreitz@redhat.com>
To: "Fam Zheng" <fam@euphon.net>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Kevin Wolf <kwolf@redhat.com>, Thomas Huth <thuth@redhat.com>,
qemu-block@nongnu.org, Markus Armbruster <armbru@redhat.com>,
Wainer dos Santos Moschetta <wainersm@redhat.com>,
qemu-devel@nongnu.org, Alexander Bulekov <alxndr@bu.edu>,
Bandan Das <bsd@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Cleber Rosa <crosa@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v2 0/2] block: Use 'read-zeroes=true' mode by default with 'null-co' driver
Date: Tue, 23 Feb 2021 17:01:14 +0100 [thread overview]
Message-ID: <74e3128c-b7e6-20da-c0a7-a799d1da560c@redhat.com> (raw)
In-Reply-To: <20210223092153.GA122030@ip-172-44-255-31>
On 23.02.21 10:21, Fam Zheng wrote:
> On 2021-02-22 18:55, Philippe Mathieu-Daudé wrote:
>> On 2/22/21 6:35 PM, Fam Zheng wrote:
>>> On 2021-02-19 15:09, Philippe Mathieu-Daudé wrote:
>>>> On 2/19/21 12:07 PM, Max Reitz wrote:
>>>>> On 13.02.21 22:54, Fam Zheng wrote:
>>>>>> On 2021-02-11 15:26, Philippe Mathieu-Daudé wrote:
>>>>>>> The null-co driver doesn't zeroize buffer in its default config,
>>>>>>> because it is designed for testing and tests want to run fast.
>>>>>>> However this confuses security researchers (access to uninit
>>>>>>> buffers).
>>>>>>
>>>>>> I'm a little surprised.
>>>>>>
>>>>>> Is changing default the only way to fix this? I'm not opposed to
>>>>>> changing the default but I'm not convinced this is the easiest way.
>>>>>> block/nvme.c also doesn't touch the memory, but defers to the device
>>>>>> DMA, why doesn't that confuse the security checker?
>>>>
>>>> Generally speaking, there is a balance between security and performance.
>>>> We try to provide both, but when we can't, my understanding is security
>>>> is more important.
>>>
>>> Why is hiding the code path behind a non-default more secure? What is
>>> not secure now?
>>
>> Se we are back to the problem of having default values.
>>
>> I'd like to remove the default and have the option explicit,
>> but qemu_opt_get_bool() expects a 'default' value.
>>
>> Should we rename qemu_opt_get_bool() -> qemu_opt_get_bool_with_default()
>> and add a simpler qemu_opt_get_bool()?
>
> My point is I still don't get the full context of the problem this
> series is trying to solve. If the problem is tools are confused, I would
> like to understand why. What is the thing that matters here, exactly?
My personal opinion is that it isn’t even about tools, it’s just about
the fact that operating on uninitialized data is something that should
generally be avoided. For the null drivers, there is a reason to allow
it (performance testing), but that should be a special case, not the
default.
> But there's always been nullblk.ko in kernel that doesn't lie in the
> name. If we change the default we are not very honest any more about
> what the driver actually does.
Then we’re already lying, because if we model it after /dev/null, we
should probably return -EIO on every read.
If a null device returns data, that data may be arbitrary, so we might
as well memset() it to 0. As I wrote in my reply to Daniel, I find it
perfectly reasonable to make that the default: For functional tests
(which I think are the majority of null’s users), it doesn’t make a
difference except that operating on uninitialized data just isn’t a nice
thing to do.
The only reasons I can see we wouldn’t change the default are (1)
compatibility, which I don’t think is an issue for a test driver (plus,
the only thing it might break are performance tests, which naively I
think wouldn’t be a problem), and (2) it’s an additional gotcha when
performance testing, but there are usually so many gotchas with
performance testing, that I don’t see this as a problem either.
> Even if null-co:// and null-aio:// is a bad idea, then let's add
> zero-co://co and zero-aio://, and deprecate null-*://.
I find that too much work simply because it’s more work than just making
read-zeroes=on the default, and I find doing that reasonable.
(Furthermore, we wouldn’t deprecate null-*, because it’s needed for
performance testing. We could add read-zeroes as an option to the new
zero-* drivers, but I find that silly.)
Max
next prev parent reply other threads:[~2021-02-23 16:04 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-11 14:26 [PATCH v2 0/2] block: Use 'read-zeroes=true' mode by default with 'null-co' driver Philippe Mathieu-Daudé
2021-02-11 14:26 ` [PATCH v2 1/2] block: Explicit null-co uses 'read-zeroes=false' Philippe Mathieu-Daudé
2021-02-11 16:29 ` Vladimir Sementsov-Ogievskiy
2021-02-11 19:19 ` Philippe Mathieu-Daudé
2021-02-11 22:40 ` Eric Blake
2021-02-11 23:49 ` Philippe Mathieu-Daudé
2021-02-12 11:34 ` Vladimir Sementsov-Ogievskiy
2021-02-12 19:06 ` Eric Blake
2021-02-11 14:26 ` [PATCH v2 2/2] block/null: Enable 'read-zeroes' mode by default Philippe Mathieu-Daudé
2021-02-11 16:22 ` Stefan Hajnoczi
2021-02-11 15:42 ` [PATCH v2 0/2] block: Use 'read-zeroes=true' mode by default with 'null-co' driver Alexander Bulekov
2021-02-12 14:32 ` Philippe Mathieu-Daudé
2021-02-13 21:54 ` Fam Zheng
2021-02-19 11:07 ` Max Reitz
2021-02-19 14:09 ` Philippe Mathieu-Daudé
2021-02-22 17:35 ` Fam Zheng
2021-02-22 17:55 ` Philippe Mathieu-Daudé
2021-02-23 9:21 ` Fam Zheng
2021-02-23 16:01 ` Max Reitz [this message]
2021-02-23 17:21 ` Fam Zheng
2021-02-22 18:15 ` Daniel P. Berrangé
2021-02-22 18:36 ` Philippe Mathieu-Daudé
2021-02-23 8:44 ` Max Reitz
2021-02-23 9:29 ` Daniel P. Berrangé
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=74e3128c-b7e6-20da-c0a7-a799d1da560c@redhat.com \
--to=mreitz@redhat.com \
--cc=alxndr@bu.edu \
--cc=armbru@redhat.com \
--cc=bsd@redhat.com \
--cc=crosa@redhat.com \
--cc=fam@euphon.net \
--cc=kwolf@redhat.com \
--cc=lvivier@redhat.com \
--cc=pbonzini@redhat.com \
--cc=philmd@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
--cc=wainersm@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.