From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Herve Codina <herve.codina@bootlin.com>
Cc: Saravana Kannan <saravanak@google.com>,
Petr Mladek <pmladek@suse.com>,
Steven Rostedt <rostedt@goodmis.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Sergey Senozhatsky <senozhatsky@chromium.org>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
linux-kernel@vger.kernel.org,
Allan Nielsen <allan.nielsen@microchip.com>,
Horatiu Vultur <horatiu.vultur@microchip.com>,
Steen Hegelund <steen.hegelund@microchip.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
stable@vger.kernel.org
Subject: Re: [PATCH v2 1/1] lib/vsprintf: Fix %pfwf when current node refcount == 0
Date: Tue, 14 Nov 2023 16:59:35 +0200 [thread overview]
Message-ID: <ZVOLV008PaKFXRy9@smile.fi.intel.com> (raw)
In-Reply-To: <20231114143558.356259-1-herve.codina@bootlin.com>
On Tue, Nov 14, 2023 at 03:35:58PM +0100, Herve Codina wrote:
> A refcount issue can appeared in __fwnode_link_del() due to the
> pr_debug() call:
> WARNING: CPU: 0 PID: 901 at lib/refcount.c:25 refcount_warn_saturate+0xe5/0x110
> Call Trace:
> <TASK>
> ...
> of_node_get+0x1e/0x30
> of_fwnode_get+0x28/0x40
> fwnode_full_name_string+0x34/0x90
> fwnode_string+0xdb/0x140
> ...
> vsnprintf+0x17b/0x630
> ...
> __fwnode_link_del+0x25/0xa0
> fwnode_links_purge+0x39/0xb0
> of_node_release+0xd9/0x180
> ...
>
> Indeed, an fwnode (of_node) is being destroyed and so, of_node_release()
> is called because the of_node refcount reached 0.
> From of_node_release() several function calls are done and lead to
> a pr_debug() calls with %pfwf to print the fwnode full name.
> The issue is not present if we change %pfwf to %pfwP.
>
> To print the full name, %pfwf iterates over the current node and its
> parents and obtain/drop a reference to all nodes involved.
>
> In order to allow to print the full name (%pfwf) of a node while it is
> being destroyed, do not obtain/drop a reference to this current node.
One nit-pick below, otherwise
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
...
> /* Loop starting from the root node to the current node. */
> for (depth = fwnode_count_parents(fwnode); depth >= 0; depth--) {
> - struct fwnode_handle *__fwnode =
> - fwnode_get_nth_parent(fwnode, depth);
> + /*
> + * Only get a reference for other nodes (ie parents node).
"parent's node" (doesn't look right)? Or "parent nodes"?
> + * fwnode refcount may be 0 here.
> + */
> + struct fwnode_handle *__fwnode = depth ?
> + fwnode_get_nth_parent(fwnode, depth) : fwnode;
>
> buf = string(buf, end, fwnode_get_name_prefix(__fwnode),
> default_str_spec);
> buf = string(buf, end, fwnode_get_name(__fwnode),
> default_str_spec);
>
> - fwnode_handle_put(__fwnode);
> + if (depth)
> + fwnode_handle_put(__fwnode);
> }
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2023-11-14 14:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-14 14:35 [PATCH v2 1/1] lib/vsprintf: Fix %pfwf when current node refcount == 0 Herve Codina
2023-11-14 14:47 ` Sakari Ailus
2023-11-14 15:12 ` Herve Codina
2023-11-14 14:59 ` Andy Shevchenko [this message]
2023-11-14 15:13 ` Herve Codina
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=ZVOLV008PaKFXRy9@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=allan.nielsen@microchip.com \
--cc=herve.codina@bootlin.com \
--cc=horatiu.vultur@microchip.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=pmladek@suse.com \
--cc=rafael.j.wysocki@intel.com \
--cc=rostedt@goodmis.org \
--cc=sakari.ailus@linux.intel.com \
--cc=saravanak@google.com \
--cc=senozhatsky@chromium.org \
--cc=stable@vger.kernel.org \
--cc=steen.hegelund@microchip.com \
--cc=thomas.petazzoni@bootlin.com \
/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.