On Thu, 27 Apr 2006, Johannes Stezenbach wrote: > On Wed, Apr 26, 2006, Andrew de Quincey wrote: > > I just need to figure out a nice way to solve the problem Johannes raised > > about the symbol_puts now. > > Maybe complement dvb_attach() with dvb_detach()? > > Or ignore the issue for now, lets see if it is really > a problem for someone. It would be a pain to impliment dvb_detach. It needs the xxxx_attach() symbol as an argument, it's not possible to use a function pointer. This would be a huge pain, as each driver, after calling videobuf_dvb_unregister() would need to have a big switch statement for each card type: switch(dev->core->board) { case CX88_BOARD_KWORLD_DVB_T: case CX88_BOARD_DNTV_LIVE_DVB_T: case CX88_BOARD_ADSTECH_DVB_T_PCI: dvb_detach(mt352_attach); break; case CX88_BOARD_PCHDTV_HD3000: dvb_detach(or51132_attach); break; [ and so on] } Another possiblilty is to have dvb_attach call symbol_put() as soon as it is done with the xxx_attach symbol. The frontend release function wouldn't need to call symbol_put() then. You would need to add some kind of reference counting to each frontend, so that it won't unload until all frontends that it allocated with xxxx_attach have been released by calling the frontend->release() method. _______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb