On Sun, 2007-05-06 at 11:40 -0700, Trent Piepho wrote: > The kernel reference counting is done at the module level, not the symbol > level. > > Normally what happens is that when dvb_attach() is used to, it does a > symbol_get() on the attach_XXX() function. At release time, the symbol_put() > is done on at the release_XXX() function. Since both functions should be in > the same module, it has the desired effect. > > If you're seeing the counter wrap around, dvb_attach() was probably not used > in the first place, or the is an extra symbol_put() in there some place. Hi Trent, The way that I understand it, dvb_attach() does a symbol_request(xc3028_attach), executes xc3028_attach and then does a symbol_put(xc3028_attach) if the function returns 0. Then, later, when we try to do a symbol_put_addr on xc3028_release, the module reference count is 0 and it will then go negative. I think that the bug is that xc3028_attach is returning 0 to indicate success whereas dvb_attach() is treating 0 as failure? Daniel _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb