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 V5 11/14] i3c: master: Reject IBI requests from non-IBI-capable devices
Date: Fri, 07 Aug 2026 15:26:30 +0000 [thread overview]
Message-ID: <20260807152630.C94091F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260807145638.168865-12-adrian.hunter@intel.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Workqueue memory and rescuer thread leak on the error path of i3c_dev_request_ibi_locked.
--
--- Patch [11]: [PATCH V5 11/14] i3c: master: Reject IBI requests from non-IBI-capable devices ---
commit d6c55123f731ff15725d89d2f9b3fef0f879efa9
Author: Adrian Hunter <adrian.hunter@intel.com>
i3c: master: Reject IBI requests from non-IBI-capable devices
This patch checks if a device advertises IBI support before attempting to
set up IBI handling. It adds a check for I3C_BCR_IBI_REQ_CAP in
i3c_device_request_ibi() and returns -EOPNOTSUPP if not supported.
> diff --git a/drivers/i3c/device.c b/drivers/i3c/device.c
> --- a/drivers/i3c/device.c
> +++ b/drivers/i3c/device.c
[ ... ]
> @@ -204,12 +204,14 @@ int i3c_device_request_ibi(struct i3c_device *dev,
> return ret;
>
> i3c_bus_normaluse_lock(dev->bus);
> - if (dev->desc) {
> + if (!dev->desc) {
> + ret = -ENOENT;
> + } else if (!(dev->desc->info.bcr & I3C_BCR_IBI_REQ_CAP)) {
> + ret = -EOPNOTSUPP;
> + } else {
> mutex_lock(&dev->desc->ibi_lock);
> ret = i3c_dev_request_ibi_locked(dev->desc, req);
[Severity: High]
This is a pre-existing issue, but looking at the error path of
i3c_dev_request_ibi_locked() in drivers/i3c/master.c, does it leak the
workqueue and its rescuer thread if the hardware driver fails the request?
drivers/i3c/master.c:i3c_dev_request_ibi_locked() {
...
ibi->wq = alloc_ordered_workqueue(dev_name(i3cdev_to_dev(dev->dev)),
WQ_MEM_RECLAIM);
if (!ibi->wq) {
kfree(ibi);
return -ENOMEM;
}
...
ret = master->ops->request_ibi(dev, req);
if (ret) {
kfree(ibi);
dev->ibi = NULL;
}
return ret;
}
When a device driver requests an IBI and the bus controller fails the
request, the ibi struct is freed but destroy_workqueue() is never called.
Since the workqueue is created with WQ_MEM_RECLAIM, wouldn't this leak a
kernel task and its associated memory on every failure?
> mutex_unlock(&dev->desc->ibi_lock);
> - } else {
> - ret = -ENOENT;
> }
> i3c_bus_normaluse_unlock(dev->bus);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260807145638.168865-1-adrian.hunter@intel.com?part=11
WARNING: multiple messages have this Message-ID (diff)
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 V5 11/14] i3c: master: Reject IBI requests from non-IBI-capable devices
Date: Fri, 07 Aug 2026 15:26:30 +0000 [thread overview]
Message-ID: <20260807152630.C94091F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260807145638.168865-12-adrian.hunter@intel.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Workqueue memory and rescuer thread leak on the error path of i3c_dev_request_ibi_locked.
--
--- Patch [11]: [PATCH V5 11/14] i3c: master: Reject IBI requests from non-IBI-capable devices ---
commit d6c55123f731ff15725d89d2f9b3fef0f879efa9
Author: Adrian Hunter <adrian.hunter@intel.com>
i3c: master: Reject IBI requests from non-IBI-capable devices
This patch checks if a device advertises IBI support before attempting to
set up IBI handling. It adds a check for I3C_BCR_IBI_REQ_CAP in
i3c_device_request_ibi() and returns -EOPNOTSUPP if not supported.
> diff --git a/drivers/i3c/device.c b/drivers/i3c/device.c
> --- a/drivers/i3c/device.c
> +++ b/drivers/i3c/device.c
[ ... ]
> @@ -204,12 +204,14 @@ int i3c_device_request_ibi(struct i3c_device *dev,
> return ret;
>
> i3c_bus_normaluse_lock(dev->bus);
> - if (dev->desc) {
> + if (!dev->desc) {
> + ret = -ENOENT;
> + } else if (!(dev->desc->info.bcr & I3C_BCR_IBI_REQ_CAP)) {
> + ret = -EOPNOTSUPP;
> + } else {
> mutex_lock(&dev->desc->ibi_lock);
> ret = i3c_dev_request_ibi_locked(dev->desc, req);
[Severity: High]
This is a pre-existing issue, but looking at the error path of
i3c_dev_request_ibi_locked() in drivers/i3c/master.c, does it leak the
workqueue and its rescuer thread if the hardware driver fails the request?
drivers/i3c/master.c:i3c_dev_request_ibi_locked() {
...
ibi->wq = alloc_ordered_workqueue(dev_name(i3cdev_to_dev(dev->dev)),
WQ_MEM_RECLAIM);
if (!ibi->wq) {
kfree(ibi);
return -ENOMEM;
}
...
ret = master->ops->request_ibi(dev, req);
if (ret) {
kfree(ibi);
dev->ibi = NULL;
}
return ret;
}
When a device driver requests an IBI and the bus controller fails the
request, the ibi struct is freed but destroy_workqueue() is never called.
Since the workqueue is created with WQ_MEM_RECLAIM, wouldn't this leak a
kernel task and its associated memory on every failure?
> mutex_unlock(&dev->desc->ibi_lock);
> - } else {
> - ret = -ENOENT;
> }
> i3c_bus_normaluse_unlock(dev->bus);
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260807145638.168865-1-adrian.hunter@intel.com?part=11
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
next prev parent reply other threads:[~2026-08-07 15:26 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-07 14:56 [PATCH V5 00/14] i3c: Support IBI-based system wakeup Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 14:56 ` [PATCH V5 01/14] i3c: master: Fix recursive locking during device registration Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:26 ` sashiko-bot
2026-08-07 15:26 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 02/14] i3c: Fix unlocked dereference of dev->desc in i3c_device_get_supported_xfer_mode() Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:13 ` sashiko-bot
2026-08-07 15:13 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 03/14] i3c: master: Do not treat master device as a duplicate target Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:07 ` sashiko-bot
2026-08-07 15:07 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 04/14] i3c: master: Fix use-after-free of master->this Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:14 ` sashiko-bot
2026-08-07 15:14 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 05/14] i3c: Make dev->desc locking assumptions explicit Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:20 ` sashiko-bot
2026-08-07 15:20 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 06/14] i3c: master: Fix potential UAF in i3c_device_uevent() Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:21 ` sashiko-bot
2026-08-07 15:21 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 07/14] i3c: master: Fix potential UAF in i3c_device_match() Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:37 ` sashiko-bot
2026-08-07 15:37 ` sashiko-bot
2026-08-07 19:43 ` Frank Li
2026-08-07 19:43 ` Frank Li
2026-08-08 13:07 ` Alexandre Belloni
2026-08-08 13:07 ` Alexandre Belloni
2026-08-07 14:56 ` [PATCH V5 08/14] i3c: master: Support IBI-based wakeup capability Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:16 ` sashiko-bot
2026-08-07 15:16 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 09/14] i3c: master: Report wakeup events for IBIs Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:41 ` sashiko-bot
2026-08-07 15:41 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 10/14] i3c: master: Add helper to query bus wakeup requirements Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:21 ` sashiko-bot
2026-08-07 15:21 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 11/14] i3c: master: Reject IBI requests from non-IBI-capable devices Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:26 ` sashiko-bot [this message]
2026-08-07 15:26 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 12/14] i3c: mipi-i3c-hci-pci: Propagate I3C wakeup requirements to PCI Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:38 ` sashiko-bot
2026-08-07 15:38 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 13/14] i3c: mipi-i3c-hci: Factor out i3c_hci_sysdev() Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:40 ` sashiko-bot
2026-08-07 15:40 ` sashiko-bot
2026-08-07 14:56 ` [PATCH V5 14/14] i3c: mipi-i3c-hci: Advertise IBI wakeup capability Adrian Hunter
2026-08-07 14:56 ` Adrian Hunter
2026-08-07 15:30 ` sashiko-bot
2026-08-07 15:30 ` sashiko-bot
2026-08-08 13:09 ` [PATCH V5 00/14] i3c: Support IBI-based system wakeup Alexandre Belloni
2026-08-08 13:09 ` Alexandre Belloni
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=20260807152630.C94091F00A3A@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 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.