[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: MOD_INC_USE_COUNT
Jan Hudec wrote:
> On Mon, Dec 09, 2002 at 04:36:50PM +0100, Edward Gerhold wrote:
>
>> Hmmm. That 's new for me. In my Books ldd (german) on page 36
>> and lnx-networkarchitecture (german) on page 37 they write, we
>> have to use the MOD_INC_.. and MOD_DEC_.. macros to set MOD_IN_USE.
>> MOD_INC_USE_COUNT has to be used _before_ opening any devices.
>> MOD_DEC_USE_COUNT has to be used _after_ closing any devices.
>> (Wehrle writes: A dev->open() increases the usage-counter by 1,
>> a dev->close() decreases the counter by 1 - both automatically)
>> MOD_IN_USE is used to prevent from a module_cleanup when any devices
>> which need the module are busy. Having the device busy, but the
>> module removed, would cause segmentation faults or kernel panics.
>> MOD_IN_USE can be influenced via ioctl.
>>
>> Now I don't understand why i shouldn't use the macros. I've read now
>> a few times that i'll have to (i remember also lkmpg gives the advice
>> to use them, the book linux-kernelprogramming (german) gives the advice,
>> too). Who can lead me out ?
>
>
> Every code, where there is a reason to call MOD_INC/DEC_USE_COUNT, is
> broken, because there is a race.
>
> When there is a module M that provides some function (say F), the
> count for M must be incremented _before_ the first instruction of F is
> executed and decremented only _after_ the last instruction of F has
> finished. Thus you have to make sure that anyone who calls F increments
> the use count. For filesystems, devices and the like, there is always on
> owner field somewhere that is used by generic code to increment use
> count of module that implements the file/device/... For functions used
> by other module by means of dynamick linking, the linker takes care of
> that. Any other entry point has a problem, but there should not be any
> possibility for other entry point. (Modules can't sanely add syscalls).
>
> -------------------------------------------------------------------------------
> Jan 'Bulb' Hudec <bulb@ucw.cz>
Yes.
I can use this with T.L. Madhus warning plus the other mails to the subject.
It also describes the same like in the books. I feel cleared up now. I'm out.
Thank you very much.
Edward
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/