All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "David Matlack" <dmatlack@google.com>
Cc: linux-pci@vger.kernel.org
Subject: Re: [PATCH v7 09/12] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges
Date: Fri, 10 Jul 2026 21:37:33 +0000	[thread overview]
Message-ID: <20260710213733.B4A461F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260710212616.1351130-10-dmatlack@google.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Data race on the `ari_enabled` bitfield of the bridge device.
--

--- Patch [9]: [PATCH v7 09/12] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges ---
commit dba41feb80b848815c664a662c635fefb4ca7403
Author: David Matlack <dmatlack@google.com>

PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges

This commit inherits the ARI Forwarding Enable on preserved bridges during a
Live Update. It updates the pci_dev->ari_enabled flag so preserved devices
can be identified with the expanded 8-bit function number.

> diff --git a/drivers/pci/liveupdate.c b/drivers/pci/liveupdate.c
> index a95bfe5eff770..74a11e520f0d3 100644
> --- a/drivers/pci/liveupdate.c
> +++ b/drivers/pci/liveupdate.c

[ ... ]

> @@ -816,6 +820,20 @@ int pci_liveupdate_enable_acs(struct pci_dev *dev)
>  	return 0;
>  }
>  
> +int pci_liveupdate_configure_ari(struct pci_dev *dev)
> +{
> +	u16 val;
> +
> +	guard(rwsem_read)(&pci_liveupdate.rwsem);
> +
> +	if (!dev->liveupdate.incoming)
> +		return -EINVAL;
> +
> +	pcie_capability_read_word(dev, PCI_EXP_DEVCTL2, &val);
> +	dev->ari_enabled = !!(val & PCI_EXP_DEVCTL2_ARI);

[Severity: Medium]
Can this bitfield modification race with concurrent updates to other
bitfields in the same word?

In pci_liveupdate_configure_ari(), dev->ari_enabled is updated. Since
bitfield modifications compile to read-modify-write operations on the
underlying word, concurrent updates to other flags in the same word (like
is_busmaster, is_managed, or msi_enabled) could be silently lost.

The pci_liveupdate.rwsem protects liveupdate structures but does not appear
to provide mutual exclusion for the pci_dev bitfields.

> +	return 0;
> +}

[ ... ]

> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 739ecaab2e76f..e0c133b66a359 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c

[ ... ]

> @@ -3539,6 +3539,12 @@ void pci_configure_ari(struct pci_dev *dev)
>  	if (!(cap & PCI_EXP_DEVCAP2_ARI))
>  		return;
>  
> +	if (!pci_liveupdate_configure_ari(bridge))
> +		return;
> +
> +	if (pcie_ari_disabled)
> +		return;
> +
>  	if (pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI)) {
>  		pcie_capability_set_word(bridge, PCI_EXP_DEVCTL2,
>  					 PCI_EXP_DEVCTL2_ARI);
>  		bridge->ari_enabled = 1;

[Severity: Medium]
This isn't a bug introduced by this patch, but this preexisting fallback
path in pci_configure_ari() also modifies the bridge->ari_enabled bitfield.

Could this also be susceptible to the same read-modify-write data race
against other flags in the same word?

>  	} else {
>  		pcie_capability_clear_word(bridge, PCI_EXP_DEVCTL2,

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260710212616.1351130-1-dmatlack@google.com?part=9

  reply	other threads:[~2026-07-10 21:37 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-10 21:26 [PATCH v7 00/12] PCI: liveupdate: PCI core support for Live Update David Matlack
2026-07-10 21:26 ` [PATCH v7 01/12] PCI: liveupdate: Set up FLB handler for the PCI core David Matlack
2026-07-10 21:36   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 02/12] PCI: liveupdate: Track outgoing preserved PCI devices David Matlack
2026-07-10 21:39   ` sashiko-bot
2026-07-10 22:20     ` David Matlack
2026-07-10 21:26 ` [PATCH v7 03/12] PCI: liveupdate: Track incoming " David Matlack
2026-07-10 21:39   ` sashiko-bot
2026-07-10 22:31     ` David Matlack
2026-07-10 21:26 ` [PATCH v7 04/12] PCI: liveupdate: Document driver binding responsibilities David Matlack
2026-07-10 21:28   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 05/12] PCI: liveupdate: Keep bus numbers constant during Live Update David Matlack
2026-07-10 21:32   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 06/12] PCI: liveupdate: Auto-preserve upstream bridges across " David Matlack
2026-07-10 21:33   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 07/12] PCI: Refactor matching logic for pci_dev_acs_ops David Matlack
2026-07-10 21:34   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 08/12] PCI: liveupdate: Inherit ACS flags in incoming preserved devices David Matlack
2026-07-10 21:34   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 09/12] PCI: liveupdate: Inherit ARI Forwarding Enable on preserved bridges David Matlack
2026-07-10 21:37   ` sashiko-bot [this message]
2026-07-10 22:07     ` David Matlack
2026-07-10 21:26 ` [PATCH v7 10/12] PCI: liveupdate: Freeze preservation status during shutdown David Matlack
2026-07-10 21:35   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 11/12] PCI: liveupdate: Do not disable bus mastering on preserved devices during kexec David Matlack
2026-07-10 21:38   ` sashiko-bot
2026-07-10 21:26 ` [PATCH v7 12/12] Documentation: PCI: Add documentation for Live Update David Matlack
2026-07-10 21:37   ` 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=20260710213733.B4A461F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dmatlack@google.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.