From: Shuhao Fu <sfual@cse.ust.hk>
To: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Frank Li <Frank.Li@nxp.com>,
linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH] i3c: fix refcount inconsistency in i3c_master_register
Date: Wed, 8 Oct 2025 15:27:09 +0800 [thread overview]
Message-ID: <aOYSTX5EA_nRoIY_@osx.local> (raw)
In `i3c_master_register`, a possible refcount inconsistency has been
identified, causing possible resource leak.
Function `of_node_get` increases the refcount of `parent->of_node`. If
function `i3c_bus_init` fails, the function returns immediately without
a corresponding decrease, resulting in an inconsistent refcounter.
In this patch, an extra goto label is added to ensure the balance of
refcount when `i3c_bus_init` fails.
Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Signed-off-by: Shuhao Fu <sfual@cse.ust.hk>
---
drivers/i3c/master.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index d946db75d..9f4fe98d2 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -2885,7 +2885,7 @@ int i3c_master_register(struct i3c_master_controller *master,
ret = i3c_bus_init(i3cbus, master->dev.of_node);
if (ret)
- return ret;
+ goto err_put_of_node;
device_initialize(&master->dev);
dev_set_name(&master->dev, "i3c-%d", i3cbus->id);
@@ -2973,6 +2973,9 @@ int i3c_master_register(struct i3c_master_controller *master,
err_put_dev:
put_device(&master->dev);
+err_put_of_node:
+ of_node_put(master->dev.of_node);
+
return ret;
}
EXPORT_SYMBOL_GPL(i3c_master_register);
--
2.39.5 (Apple Git-154)
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
WARNING: multiple messages have this Message-ID (diff)
From: Shuhao Fu <sfual@cse.ust.hk>
To: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: Frank Li <Frank.Li@nxp.com>,
linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH] i3c: fix refcount inconsistency in i3c_master_register
Date: Wed, 8 Oct 2025 15:27:09 +0800 [thread overview]
Message-ID: <aOYSTX5EA_nRoIY_@osx.local> (raw)
In `i3c_master_register`, a possible refcount inconsistency has been
identified, causing possible resource leak.
Function `of_node_get` increases the refcount of `parent->of_node`. If
function `i3c_bus_init` fails, the function returns immediately without
a corresponding decrease, resulting in an inconsistent refcounter.
In this patch, an extra goto label is added to ensure the balance of
refcount when `i3c_bus_init` fails.
Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure")
Signed-off-by: Shuhao Fu <sfual@cse.ust.hk>
---
drivers/i3c/master.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index d946db75d..9f4fe98d2 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -2885,7 +2885,7 @@ int i3c_master_register(struct i3c_master_controller *master,
ret = i3c_bus_init(i3cbus, master->dev.of_node);
if (ret)
- return ret;
+ goto err_put_of_node;
device_initialize(&master->dev);
dev_set_name(&master->dev, "i3c-%d", i3cbus->id);
@@ -2973,6 +2973,9 @@ int i3c_master_register(struct i3c_master_controller *master,
err_put_dev:
put_device(&master->dev);
+err_put_of_node:
+ of_node_put(master->dev.of_node);
+
return ret;
}
EXPORT_SYMBOL_GPL(i3c_master_register);
--
2.39.5 (Apple Git-154)
next reply other threads:[~2025-10-08 7:27 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-08 7:27 Shuhao Fu [this message]
2025-10-08 7:27 ` [PATCH] i3c: fix refcount inconsistency in i3c_master_register Shuhao Fu
2025-10-09 16:17 ` Frank Li
2025-10-09 16:17 ` Frank Li
2025-10-10 6:34 ` Shuhao Fu
2025-10-10 6:34 ` Shuhao Fu
2025-10-13 20:19 ` Frank Li
2025-10-13 20:19 ` Frank Li
2025-10-13 21:09 ` Shuhao Fu
2025-10-13 21:09 ` Shuhao Fu
2025-10-13 22:01 ` Frank Li
2025-10-13 22:01 ` Frank Li
2025-10-14 1:55 ` Shuhao Fu
2025-10-14 1:55 ` Shuhao Fu
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=aOYSTX5EA_nRoIY_@osx.local \
--to=sfual@cse.ust.hk \
--cc=Frank.Li@nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=linux-i3c@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
/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.