From: "Michael S. Tsirkin" <mst@redhat.com>
To: P J P <ppandit@redhat.com>
Cc: "Daniel P . Berrangé" <berrange@redhat.com>,
"Prasad J Pandit" <pjp@fedoraproject.org>,
"Yi Ren" <c4tren@gmail.com>,
"QEMU Developers" <qemu-devel@nongnu.org>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Ren Ding" <rding@gatech.edu>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Hanqing Zhao" <hanqing@gatech.edu>
Subject: Re: [PATCH v2 2/2] pci: ensure configuration access is within bounds
Date: Thu, 4 Jun 2020 05:38:49 -0400 [thread overview]
Message-ID: <20200604053733-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20200603202251.1199170-3-ppandit@redhat.com>
On Thu, Jun 04, 2020 at 01:52:51AM +0530, P J P wrote:
> From: Prasad J Pandit <pjp@fedoraproject.org>
>
> While reading PCI configuration bytes, a guest may send an
> address towards the end of the configuration space. It may lead
> to an OOB access issue. Assert that 'address + len' is within
> PCI configuration space.
>
> Suggested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
My understanding is that this can't really happen normally,
this is more an assert in case some pci host devices are buggy,
as is the case of alt-vga.
Right?
Pls clarify commit log so it's obvious this is defence in depth.
> ---
> hw/pci/pci.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> Update v2: assert PCI configuration access is within bounds
> -> https://lists.gnu.org/archive/html/qemu-devel/2020-06/msg00711.html
>
> diff --git a/hw/pci/pci.c b/hw/pci/pci.c
> index 70c66965f5..173bec4fd5 100644
> --- a/hw/pci/pci.c
> +++ b/hw/pci/pci.c
> @@ -1381,6 +1381,8 @@ uint32_t pci_default_read_config(PCIDevice *d,
> {
> uint32_t val = 0;
>
> + assert(address + len <= pci_config_size(d));
> +
> if (pci_is_express_downstream_port(d) &&
> ranges_overlap(address, len, d->exp.exp_cap + PCI_EXP_LNKSTA, 2)) {
> pcie_sync_bridge_lnk(d);
> --
> 2.26.2
prev parent reply other threads:[~2020-06-04 9:39 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-03 20:22 [PATCH v2 0/2] Ensure PCI configuration access is within bounds P J P
2020-06-03 20:22 ` [PATCH v2 1/2] ait-vga: check address before reading configuration bytes P J P
2020-06-03 21:58 ` BALATON Zoltan
2020-06-04 8:43 ` Daniel P. Berrangé
2020-06-04 9:18 ` P J P
2020-06-04 9:40 ` Michael S. Tsirkin
2020-06-03 20:22 ` [PATCH v2 2/2] pci: ensure configuration access is within bounds P J P
2020-06-03 22:13 ` BALATON Zoltan
2020-06-04 5:14 ` Gerd Hoffmann
2020-06-04 9:44 ` Michael S. Tsirkin
2020-06-04 5:31 ` P J P
2020-06-04 6:07 ` Philippe Mathieu-Daudé
2020-06-04 9:41 ` Michael S. Tsirkin
2020-06-04 11:37 ` BALATON Zoltan
2020-06-04 11:40 ` Michael S. Tsirkin
2020-06-04 11:49 ` BALATON Zoltan
2020-06-04 11:58 ` Michael S. Tsirkin
2020-06-04 12:14 ` BALATON Zoltan
2020-06-04 14:11 ` Michael S. Tsirkin
2020-06-04 9:10 ` Peter Maydell
2020-06-04 9:35 ` Michael S. Tsirkin
2020-06-04 9:38 ` Michael S. Tsirkin [this message]
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=20200604053733-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=berrange@redhat.com \
--cc=c4tren@gmail.com \
--cc=hanqing@gatech.edu \
--cc=kraxel@redhat.com \
--cc=philmd@redhat.com \
--cc=pjp@fedoraproject.org \
--cc=ppandit@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rding@gatech.edu \
/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.