From: sashiko-bot@kernel.org
To: "David Matlack" <dmatlack@google.com>,
kexec@lists.infradead.org, linux-pci@vger.kernel.org
Cc: "Adithya Jayachandran" <ajayachandra@nvidia.com>,
"Alexander Graf" <graf@amazon.com>,
"Alex Williamson" <alex@shazbot.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Chris Li" <chrisl@kernel.org>,
"David Rientjes" <rientjes@google.com>,
"Jacob Pan" <jacob.pan@linux.microsoft.com>,
"Jason Gunthorpe" <jgg@nvidia.com>,
"Jonathan Corbet" <corbet@lwn.net>,
"Josh Hilke" <jrhilke@google.com>,
"Leon Romanovsky" <leonro@nvidia.com>,
"Lukas Wunner" <lukas@wunner.de>,
"Mike Rapoport" <rppt@kernel.org>,
"Parav Pandit" <parav@nvidia.com>,
"Pasha Tatashin" <pasha.tatashin@soleen.com>,
"Pranjal Shrivastava" <praan@google.com>,
"Pratyush Yadav" <pratyush@kernel.org>,
"Randy Dunlap" <rdunlap@infradead.org>,
"Saeed Mahameed" <saeedm@nvidia.com>,
"Samiullah Khawaja" <skhawaja@google.com>,
"Shuah Khan" <skhan@linuxfoundation.org>,
"Vipin Sharma" <vipinsh@google.com>,
"William Tu" <witu@nvidia.com>, "Yi Liu" <yi.l.liu@intel.com>
Subject: Re: [PATCH v10 03/13] PCI: liveupdate: Track incoming preserved PCI devices
Date: Tue, 13 Oct 2026 16:40:14 +0000 [thread overview]
Message-ID: <sashiko-outbox-170133@kernel.org> (raw)
In-Reply-To: <20261013162529.1928093-4-dmatlack@google.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] pci: liveupdate: silent DMA corruption risk on incoming device cleanup
--
commit 30099916ad0bce596acb2541018cac55703694d3
Author: David Matlack <dmatlack@google.com>
PCI: liveupdate: Track incoming preserved PCI devices
This commit adds tracking for incoming preserved PCI devices during Live
Update. It introduces pci_liveupdate_setup_device() to fetch the serialized
state from the previous kernel and marks devices as incoming-preserved until
drivers call pci_liveupdate_finish().
> diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
> index 22d5d177e104d..a1d9b2b1f9e38 100644
> --- a/drivers/pci/liveupdate.c
> +++ b/drivers/pci/liveupdate.c
[ ... ]
> @@ -382,7 +599,80 @@ void pci_liveupdate_cleanup_device(struct pci_dev *dev)
> */
> if (READ_ONCE(dev->liveupdate.outgoing))
> pci_WARN(dev, 1, "Destroying outgoing-preserved device!\n");
> +
> + if (READ_ONCE(dev->liveupdate.incoming))
> + pci_WARN(dev, 1, "Destroying incoming-preserved device!\n");
[Severity: High]
Does this code risk silent memory corruption by only warning instead of
panicking?
When an incoming preserved device is destroyed, it is dropped from the
kernel's resource tracking. However, the device may still be live and
performing DMA if it was handed over by the previous kernel.
If this only warns, it allows the PCI core to proceed and potentially
reassign the device's bus numbers and MMIO resources to other devices while
the original device is still active. Although pci_check_all_devices_finished()
panics at the end of the Live Update session for unfinished devices, there is
a dangerous window where resource conflicts and DMA corruption can occur.
> +}
[ ... ]
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 2a37e5d3e8e36..ad7fdf0d56b68 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
[ ... ]
> @@ -2188,6 +2190,7 @@ int pci_setup_device(struct pci_dev *dev)
> default: /* unknown header */
> pci_err(dev, "unknown header type %02x, ignoring device\n",
> dev->hdr_type);
> + pci_liveupdate_cleanup_device(dev);
[Severity: High]
Can an incoming preserved device that fails enumeration here cause a resource
conflict?
If pci_setup_device() encounters an unknown header type for an incoming
device, it calls pci_liveupdate_cleanup_device() and ignores the device.
Since the cleanup routine only issues a warning, the live device is dropped
from tracking but might still be performing DMA.
> pci_release_of_node(dev);
> return -EIO;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261013162529.1928093-1-dmatlack@google.com?part=3
next prev parent reply other threads:[~2026-10-13 16:40 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-13 16:25 [PATCH v10 00/13] PCI: liveupdate: PCI core support for Live Update David Matlack
2026-10-13 16:25 ` [PATCH v10 01/13] PCI: liveupdate: Set up FLB handler for the PCI core David Matlack
2026-10-13 16:33 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 02/13] PCI: liveupdate: Track outgoing preserved PCI devices David Matlack
2026-10-13 16:41 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 03/13] PCI: liveupdate: Track incoming " David Matlack
2026-10-13 16:40 ` sashiko-bot [this message]
2026-10-13 16:56 ` David Matlack
2026-10-13 16:25 ` [PATCH v10 04/13] PCI: liveupdate: Document driver binding responsibilities David Matlack
2026-10-13 16:28 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 05/13] PCI: liveupdate: Auto-preserve upstream bridges across Live Update David Matlack
2026-10-13 16:41 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 06/13] PCI: liveupdate: Preserve bus numbers during " David Matlack
2026-10-13 16:39 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 07/13] PCI: Refactor matching logic for pci_dev_acs_ops David Matlack
2026-10-13 16:34 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 08/13] PCI: Save and restore the ACS Control register and Egress Control Vector David Matlack
2026-10-13 16:35 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 09/13] PCI: liveupdate: Adopt ACS controls in incoming preserved devices David Matlack
2026-10-13 16:34 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 10/13] PCI: liveupdate: Adopt ARI Forwarding Enable on preserved bridges David Matlack
2026-10-13 16:40 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 11/13] PCI: liveupdate: Freeze preservation status during shutdown David Matlack
2026-10-13 16:39 ` sashiko-bot
2026-10-13 16:50 ` David Matlack
2026-10-13 16:25 ` [PATCH v10 12/13] PCI: liveupdate: Do not disable bus mastering on preserved devices during kexec David Matlack
2026-10-13 16:35 ` sashiko-bot
2026-10-13 16:25 ` [PATCH v10 13/13] Documentation: PCI: Add documentation for Live Update David Matlack
2026-10-13 16:28 ` sashiko-bot
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=sashiko-outbox-170133@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=ajayachandra@nvidia.com \
--cc=alex@shazbot.org \
--cc=bhelgaas@google.com \
--cc=chrisl@kernel.org \
--cc=corbet@lwn.net \
--cc=dmatlack@google.com \
--cc=graf@amazon.com \
--cc=jacob.pan@linux.microsoft.com \
--cc=jgg@nvidia.com \
--cc=jrhilke@google.com \
--cc=kexec@lists.infradead.org \
--cc=leonro@nvidia.com \
--cc=linux-pci@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=parav@nvidia.com \
--cc=pasha.tatashin@soleen.com \
--cc=praan@google.com \
--cc=pratyush@kernel.org \
--cc=rdunlap@infradead.org \
--cc=rientjes@google.com \
--cc=rppt@kernel.org \
--cc=saeedm@nvidia.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=skhan@linuxfoundation.org \
--cc=skhawaja@google.com \
--cc=vipinsh@google.com \
--cc=witu@nvidia.com \
--cc=yi.l.liu@intel.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