From: Bjorn Helgaas <helgaas@kernel.org>
To: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
Logan Gunthorpe <logang@deltatee.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-hardening@vger.kernel.org
Subject: Re: [PATCH v2][next] PCI/P2PDMA: Fix potential undefined behavior bug in struct pci_p2pdma_pagemap
Date: Tue, 3 Oct 2023 17:30:10 -0500 [thread overview]
Message-ID: <20231003223010.GA692794@bhelgaas> (raw)
In-Reply-To: <ZRsUL/hATNruwtla@work>
On Mon, Oct 02, 2023 at 09:04:15PM +0200, Gustavo A. R. Silva wrote:
> `struct dev_pagemap` is a flexible structure, which means that it
> contains a flexible-array member at the bottom. This could potentially
> lead to an overwrite of the objects following `pgmap` in `struct
> pci_p2pdma_pagemap`, when `nr_range > 1`. This is currently not the
> case (notice that `nr_range` is hardcoded to `1`), however as commit
> b7b3c01b1915 ("mm/memremap_pages: support multiple ranges per invocation")
> mentions in the subject line, this code can `support multiple
> ranges per invocation`. So, we'd better prevent any problems that may
> arise in the future.
>
> Fix this by placing the declaration of object `pgmap` at the end of
> `struct pci_p2pdma_pagemap`.
>
> -Wflex-array-member-not-at-end is coming in GCC-14, and we are getting
> ready to enable it globally.
>
> Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
> Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Applied to pci/p2pdma for v6.7. Since it's not a current problem, I
assume there's no reason to apply it for v6.6 (or tag it for stable);
let me know if otherwise.
> ---
> Changes in v2:
> - Remove `Fixes:` tags. (Logan Gunthorpe)
> - Update changelog text. Make it clear that `nr_range` is hardcoded to `1`
> (Logan Gunthorpe)
> - Update subject.
> - Add Logan's RB.
>
> v1:
> Link: https://lore.kernel.org/linux-hardening/ZRnf6wVOu0IJQ2Ok@work/
>
> drivers/pci/p2pdma.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c
> index fa7370f9561a..ab34d3d36a64 100644
> --- a/drivers/pci/p2pdma.c
> +++ b/drivers/pci/p2pdma.c
> @@ -28,9 +28,9 @@ struct pci_p2pdma {
> };
>
> struct pci_p2pdma_pagemap {
> - struct dev_pagemap pgmap;
> struct pci_dev *provider;
> u64 bus_offset;
> + struct dev_pagemap pgmap;
> };
>
> static struct pci_p2pdma_pagemap *to_p2p_pgmap(struct dev_pagemap *pgmap)
> --
> 2.34.1
>
prev parent reply other threads:[~2023-10-03 22:30 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-02 19:04 [PATCH v2][next] PCI/P2PDMA: Fix potential undefined behavior bug in struct pci_p2pdma_pagemap Gustavo A. R. Silva
2023-10-03 22:30 ` Bjorn Helgaas [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=20231003223010.GA692794@bhelgaas \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=gustavoars@kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=logang@deltatee.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.