Hi Dmitry, On Thu, Sep 08, 2022 at 09:37:57PM -0700, Dmitry Torokhov wrote: > On Thu, Sep 08, 2022 at 09:04:06PM -0500, Jeff LaBundy wrote: > > Hi Dmitry, > > > > Thank you for taking a look. > > > > On Thu, Sep 08, 2022 at 02:17:21PM -0700, Dmitry Torokhov wrote: > > > On Thu, Sep 08, 2022 at 08:15:38AM -0500, Jeff LaBundy wrote: > > > > Each call to device/fwnode_get_named_child_node() must be matched > > > > with a call to fwnode_handle_put() once the corresponding node is > > > > no longer in use. This ensures a reference count remains balanced > > > > in the case of dynamic device tree support. > > > > > > > > Currently, the driver never calls fwnode_handle_put(). This patch > > > > adds the missing calls. > > > > > > Hmm, dev_fwnode() however does not do that, which means that > > > iqs7222_parse_props() has different refounting, depending on what is > > > being fetched. I think we need to start there. > > > > Right, but none of the callers that prompt iqs7222_parse_props() to > > use dev_fwnode() follow with fwnode_handle_put(). > > I think this is a problem that code has to be aware of that and behave > differently. I'd recommend bumping up refcount in dev_fwnode() path so > that all callers would behave uniformly. Agreed, right now the problem is that not all callers have a node to put. So, I think the solution is to more thoughtfully encapsulate all of this such that the caller is always responsible for passing a node, iqs7222_parse_props() bumps the refcount of whatever it is fetching, and the caller is always responsible for dropping the node. This way, callers of iqs7222_parse_props() need not be burdened with what it chooses to do under the hood. > > Thanks. > > -- > Dmitry Kind regards, Jeff LaBundy