Linux PCI subsystem development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Adrian Hunter" <adrian.hunter@intel.com>
Cc: linux-i3c@lists.infradead.org, Frank.Li@kernel.org,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	linux-pci@vger.kernel.org
Subject: Re: [PATCH V3 01/14] i3c: master: Fix recursive locking during device registration
Date: Tue, 04 Aug 2026 14:51:15 +0000	[thread overview]
Message-ID: <20260804145116.4FA131F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260804133810.184905-2-adrian.hunter@intel.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Use-After-Free of `i3cdev->desc` during unlocked driver core callbacks (e.g., `i3c_device_match`) racing with Dynamic Address Assignment (DAA).
--

--- Patch [1]: [PATCH V3 01/14] i3c: master: Fix recursive locking during device registration ---
commit b974ff3a9bff008bbc487a2d9b2d24a4539bff06
Author: Adrian Hunter <adrian.hunter@intel.com>

i3c: master: Fix recursive locking during device registration

This commit fixes recursive locking during i3c device registration by
separating device creation from registration. It populates the device
under the maintenance lock, collects unregistered devices into a list,
and calls device_register() only after releasing the lock.

> diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
> --- a/drivers/i3c/master.c
> +++ b/drivers/i3c/master.c

[ ... ]

> @@ -2104,25 +2113,37 @@ i3c_master_register_new_i3c_devs(struct i3c_master_controller *master)

[ ... ]

> +	i3c_bus_maintenance_unlock(&master->bus);
> +
> +	list_for_each_entry_safe(i3cdev, tmp, &i3c_unreg_devs, node) {
> +		ret = device_register(&i3cdev->dev);

[Severity: High]
This is a pre-existing issue, but does dropping the maintenance lock here
expose driver core callbacks to a use-after-free of i3cdev->desc?

When device_register() runs without the maintenance lock, synchronous driver
core callbacks like i3c_device_match() can locklessly dereference
i3cdev->desc:

drivers/i3c/master.c:i3c_device_match() {
    ...
    if (i3cdev->desc && i3cdev->desc->boardinfo)
        static_addr_method = i3cdev->desc->boardinfo->static_addr_method;
    ...
}

Concurrently, a hot-join event triggering dynamic address assignment (DAA)
could take the maintenance lock and free the old descriptor if it identifies
the device as a duplicate:

drivers/i3c/master.c:__i3c_master_add_i3c_dev_locked() {
    ...
    i3c_master_detach_i3c_dev(olddev);
    i3c_master_free_i3c_dev(olddev);
    ...
}

Could this sequence cause a use-after-free when the unlocked callback
races with DAA freeing the duplicate descriptor?

> +		if (ret)
> +			dev_err(&master->dev, "Failed to add I3C device (err = %d)\n", ret);
> +		else
> +			list_del_init(&i3cdev->node);
> +	}

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260804133810.184905-1-adrian.hunter@intel.com?part=1

  reply	other threads:[~2026-08-04 14:51 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-04 13:37 [PATCH V3 00/14] i3c: Support IBI-based system wakeup Adrian Hunter
2026-08-04 13:37 ` [PATCH V3 01/14] i3c: master: Fix recursive locking during device registration Adrian Hunter
2026-08-04 14:51   ` sashiko-bot [this message]
2026-08-04 16:46   ` Frank Li
2026-08-04 16:50     ` Adrian Hunter
2026-08-04 22:10       ` Frank Li
2026-08-04 13:37 ` [PATCH V3 02/14] i3c: Fix unlocked dereference of dev->desc in i3c_device_get_supported_xfer_mode() Adrian Hunter
2026-08-04 15:09   ` sashiko-bot
2026-08-04 15:38     ` Adrian Hunter
2026-08-04 13:37 ` [PATCH V3 03/14] i3c: master: Do not treat master device as a duplicate target Adrian Hunter
2026-08-04 14:17   ` sashiko-bot
2026-08-04 16:50   ` Frank Li
2026-08-04 17:33   ` Mukesh Savaliya
2026-08-04 13:38 ` [PATCH V3 04/14] i3c: master: Fix use-after-free of master->this Adrian Hunter
2026-08-04 14:10   ` sashiko-bot
2026-08-04 15:50     ` Adrian Hunter
2026-08-04 13:38 ` [PATCH V3 05/14] i3c: Make dev->desc locking assumptions explicit Adrian Hunter
2026-08-04 14:18   ` sashiko-bot
2026-08-04 18:08   ` Mukesh Savaliya
2026-08-04 13:38 ` [PATCH V3 06/14] i3c: master: Fix potential UAF in i3c_device_uevent() Adrian Hunter
2026-08-04 15:08   ` sashiko-bot
2026-08-04 18:12   ` Mukesh Savaliya
2026-08-04 13:38 ` [PATCH V3 07/14] i3c: master: Fix potential UAF in i3c_device_match() Adrian Hunter
2026-08-04 15:11   ` sashiko-bot
2026-08-04 17:14     ` Adrian Hunter
2026-08-04 13:38 ` [PATCH V3 08/14] i3c: master: Support IBI-based wakeup capability Adrian Hunter
2026-08-04 14:05   ` sashiko-bot
2026-08-04 18:21   ` Mukesh Savaliya
2026-08-04 13:38 ` [PATCH V3 09/14] i3c: master: Report wakeup events for IBIs Adrian Hunter
2026-08-04 15:10   ` sashiko-bot
2026-08-04 16:12     ` Adrian Hunter
2026-08-04 13:38 ` [PATCH V3 10/14] i3c: master: Add helper to query bus wakeup requirements Adrian Hunter
2026-08-04 13:53   ` sashiko-bot
2026-08-04 18:52   ` Mukesh Savaliya
2026-08-04 13:38 ` [PATCH V3 11/14] i3c: master: Reject IBI requests from non-IBI-capable devices Adrian Hunter
2026-08-04 14:28   ` sashiko-bot
2026-08-04 13:38 ` [PATCH V3 12/14] i3c: mipi-i3c-hci-pci: Propagate I3C wakeup requirements to PCI Adrian Hunter
2026-08-04 15:05   ` sashiko-bot
2026-08-04 13:38 ` [PATCH V3 13/14] i3c: mipi-i3c-hci: Factor out i3c_hci_sysdev() Adrian Hunter
2026-08-04 14:40   ` sashiko-bot
2026-08-04 19:28   ` Mukesh Savaliya
2026-08-04 13:38 ` [PATCH V3 14/14] i3c: mipi-i3c-hci: Advertise IBI wakeup capability Adrian Hunter
2026-08-04 14:45   ` 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=20260804145116.4FA131F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=linux-i3c@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox