All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Manivannan Sadhasivam via B4 Relay"
	<devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org>
Cc: linux-pci@vger.kernel.org
Subject: Re: [PATCH v3 2/9] power: sequencing: pcie-m2: Allow creating serdev for multiple PCI devices
Date: Tue, 19 May 2026 09:40:48 +0000	[thread overview]
Message-ID: <20260519094049.85B79C2BCC9@smtp.kernel.org> (raw)
In-Reply-To: <20260519-pwrseq-m2-bt-v3-2-b39dc2ae3966@oss.qualcomm.com>

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] Broken resource tracking and dead code due to early bailout
- [High] TOCTOU race condition causing serdev controller corruption
- [Medium] Guideline Violation: Mixing goto-based error handling and scope-based cleanup
--

commit b104c6cb6784fb376741e248e91c6f3721818285
Author: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>

power: sequencing: pcie-m2: Allow creating serdev for multiple PCI devices

This commit introduces struct pwrseq_pci_dev and tracks them in a list
within the M.2 power sequencing context. This is intended to scale the
driver to allow creating a shared serdev for multiple PCI devices.

> diff --git a/drivers/power/sequencing/pwrseq-pcie-m2.c b/drivers/power/sequencing/pwrseq-pcie-m2.c
> index b2ed336fd5ad9..469e130330faa 100644
> --- a/drivers/power/sequencing/pwrseq-pcie-m2.c
> +++ b/drivers/power/sequencing/pwrseq-pcie-m2.c

[ ... ]

> -static int pwrseq_pcie_m2_create_serdev(struct pwrseq_pcie_m2_ctx *ctx)
> +static int pwrseq_pcie_m2_create_serdev(struct pwrseq_pcie_m2_ctx *ctx,
> +					struct pci_dev *pdev)
>  {
>  	struct serdev_controller *serdev_ctrl;
>  	struct device *dev = ctx->dev;
> +	struct pwrseq_pci_dev *pci_dev;
>  	int ret;
>  
>  	struct device_node *serdev_parent __free(device_node) =

Does this function mix goto-based error handling with scope-based cleanup
helpers? The cleanup subsystem guidelines state that goto and __free() should
not be mixed in the same function to avoid confusing ownership semantics.

> @@ -248,17 +259,23 @@ static int pwrseq_pcie_m2_create_serdev(struct pwrseq_pcie_m2_ctx *ctx)
>  		return 0;
>  	}

Does this early return prevent tracking of subsequent PCI devices?

If the serdev is already attached, this returns 0 before allocating a new
pwrseq_pci_dev and adding it to the pci_devices list. If the first probed
device is later removed, it appears pwrseq_pcie_m2_remove_serdev() would
destroy the shared serdev even though other devices on the same slot might
still need it.

Also, is this check safe from concurrent execution?

During asynchronous PCI enumeration, if two functions trigger the
BUS_NOTIFY_ADD_DEVICE notifier concurrently, could they both read
serdev_ctrl->serdev as NULL and race to call serdev_device_add()? It looks
like they might both overwrite ctrl->serdev, and when the second thread
fails in device_add() due to a sysfs name collision, its error path could
set ctrl->serdev to NULL, potentially dropping the valid pointer for the
first thread's serdev.

> -	ctx->serdev = serdev_device_alloc(serdev_ctrl);
> -	if (!ctx->serdev) {
> +	pci_dev = kzalloc(sizeof(*pci_dev), GFP_KERNEL);
> +	if (!pci_dev) {
>  		ret = -ENOMEM;
>  		goto err_put_ctrl;
>  	}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260519-pwrseq-m2-bt-v3-0-b39dc2ae3966@oss.qualcomm.com?part=2

  reply	other threads:[~2026-05-19  9:40 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-19  8:55 [PATCH v3 0/9] Fixes/improvements for the PCI M.2 power sequencing driver Manivannan Sadhasivam
2026-05-19  8:55 ` Manivannan Sadhasivam via B4 Relay
2026-05-19  8:55 ` [PATCH v3 1/9] power: sequencing: pcie-m2: Fix inconsistent function prefixes Manivannan Sadhasivam
2026-05-19  8:55   ` Manivannan Sadhasivam via B4 Relay
2026-05-19 13:16   ` Fixes/improvements for the PCI M.2 power sequencing driver bluez.test.bot
2026-05-19  8:55 ` [PATCH v3 2/9] power: sequencing: pcie-m2: Allow creating serdev for multiple PCI devices Manivannan Sadhasivam
2026-05-19  8:55   ` Manivannan Sadhasivam via B4 Relay
2026-05-19  9:40   ` sashiko-bot [this message]
2026-05-19  8:55 ` [PATCH v3 3/9] power: sequencing: pcie-m2: Improve PCI device ID check Manivannan Sadhasivam
2026-05-19  8:55   ` Manivannan Sadhasivam via B4 Relay
2026-05-19  8:55 ` [PATCH v3 4/9] power: sequencing: pcie-m2: Create serdev for PCI devices present before probe Manivannan Sadhasivam
2026-05-19  8:55   ` Manivannan Sadhasivam via B4 Relay
2026-05-19 10:04   ` sashiko-bot
2026-05-19  8:56 ` [PATCH v3 5/9] power: sequencing: pcie-m2: Create BT node based on the pci_device_id[] table Manivannan Sadhasivam
2026-05-19  8:56   ` Manivannan Sadhasivam via B4 Relay
2026-05-19  8:56 ` [PATCH v3 6/9] power: sequencing: Add an API to return the pwrseq device's 'dev' pointer Manivannan Sadhasivam
2026-05-19  8:56   ` Manivannan Sadhasivam via B4 Relay
2026-05-19 10:45   ` sashiko-bot
2026-05-19  8:56 ` [PATCH v3 7/9] Bluetooth: hci_qca: Add M.2 Bluetooth device support using pwrseq Manivannan Sadhasivam
2026-05-19  8:56   ` Manivannan Sadhasivam via B4 Relay
2026-05-19 11:30   ` sashiko-bot
2026-05-19  8:56 ` [PATCH v3 8/9] Bluetooth: hci_qca: Rename 'power_ctrl_enabled' to 'bt_en_available' Manivannan Sadhasivam
2026-05-19  8:56   ` Manivannan Sadhasivam via B4 Relay
2026-05-19  8:56 ` [PATCH v3 9/9] Bluetooth: hci_qca: Set 'bt_en_available' based on W_DISABLE2# presence in M.2 connector Manivannan Sadhasivam
2026-05-19  8:56   ` Manivannan Sadhasivam via B4 Relay

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=20260519094049.85B79C2BCC9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=devnull+manivannan.sadhasivam.oss.qualcomm.com@kernel.org \
    --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.