lkml.org 
[lkml]   [2015]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH] power: Destroy IDRs on module exit
Date
Sebastian Reichel <sre@kernel.org> writes:

> [+CC: Tejun Heo <tj@kernel.org>, for being very active in lib/idr.c]
>
> Hi,
>
> On Tue, Jul 14, 2015 at 11:16:14AM +0200, Johannes Thumshirn wrote:
>> Destroy IDRs on module exit, freeing the resources for
>> * bq2415x_charger.c
>> * ds2782_battery.c
>> * ltc2941-battery-gauge.c
>
> You missed bq27x00_battery.c. Maybe a coccinelle script should be
> written?

I already did this one that last week (I think), it should've been in
your INBOX (I hope).

>> The drivers had to be converted to "ordinary" module_init()/module_exit()
>> style drivers instead of using module_i2c_driver.
>
> mh I would prefer another solution. How about adding something
> like this:
>
> static void idr_remove_and_destroy(struct idr *idp, int id)
> {
> idr_remove(idp, id);
> if (idr_is_empty(idp)
> idr_destroy(idp);
> }
>
> If that is called by the drivers instead of idr_remove(), there
> should be no need for adding idr_destroy to module_exit().
>

This would be an option.

[Copied a part of Palin's reply in here as well]
Palin> I'm feeling that there is something wrong with idr API. There is no idr
Palin> code in __init functions, so why it is needed for __exit? idr functions
Palin> are used in devices, not in global module.

but I start getting a bit puzzled about the whole IDR thing. Further
grepping through the tree revealed even more drivers doing
DEFINE_ID{A,R} but not all doing the destroy calls afterwards. Maybe
Tejun can clarify on this.

Johannes


\
 
 \ /
  Last update: 2015-07-14 13:21    [W:0.031 / U:0.644 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site