Thread (30 messages) 30 messages, 4 authors, 2015-09-21

Re: [PATCH v5 07/23] regulator: core: Remove regulator_list

From: Tomeu Vizoso <hidden>
Date: 2015-09-21 14:08:58
Also in: linux-acpi, linux-arm-kernel, lkml

On 20 September 2015 at 22:32, Russell King - ARM Linux
[off-list ref] wrote:
On Sat, Sep 19, 2015 at 08:01:29AM -0700, Mark Brown wrote:
quoted
On Thu, Sep 17, 2015 at 02:57:01PM +0200, Tomeu Vizoso wrote:
quoted
As we are already registering a device with regulator_class for each
regulator device, regulator_list is redundant and can be replaced with
calls to class_find_device() and class_for_each_device().
This appears to leak references to the struct devices returned by
class_find_device() - it takes a reference before it returns so any
device found using class_find_device() needs to be released with
put_device() and I don't see any new put_device() calls in here.
When I've been fiding exactly that kind of bug in the PHY code, I've
been adding comments to the docbook function header detailing the
requirement to balance the reference.  IMHO, this is a good idea,
because the more places that get it with these APIs, the more likely
people are to potentially read it.

The comment I've been putting in the phy code is:

 * If successful, returns a pointer to the phy_device with the embedded
 * struct device refcount incremented by one, or NULL on failure. The
 * refcount must be dropped by calling phy_disconnect() or phy_detach().

which even goes as far as telling people how they should be dropping
the reference.  So there should be no excuse (ignorance is not an
excuse for this!)
Thanks for the suggestion, I have gone with it.

Regards,

Tomeu
--
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help