[linux-dvb] af9005/mt2060 module unload failure

Michael Krufky mkrufky at linuxtv.org
Thu Jun 14 22:52:49 CEST 2007


Luca Olivetti wrote:
> En/na Michael Krufky ha escrit:
>> Luca Olivetti wrote:
>>> En/na Trent Piepho ha escrit:
>>>> On Thu, 14 Jun 2007, Luca Olivetti wrote:
>>>>> En/na Michael Krufky ha escrit:
>>>>>>> Why dont you just use dvb_frontend_detach?
>>>>>>>
>>>>>> I retract that comment...
>>>>>>
>>>>>> The dvb-usb framework does this itself inside dvb-usb-dvb.c , inside
>>>>>> dvb_usb_adapter_frontend_exit
>>>>>>
>>>>>> ... You should not have to do the symbol_put inside af9005-fe.c
>>>>>>   If you remove that code, does it fix the issue?
>>>>> Well, I'm doing the attach myself to attach the tuner to the frontend
>>>>> the first time it is opened, so if I remove the code there will be at
>>>>> least one reference to the mt2060 (or qt1010, depending on the model) so
>>>>> it cannot be unloaded.
>>>> The tuner gets attached once when you call dvb_attach() from
>>>> af9005_fe_init.  It will get detached once when dvb_frontend_detach() is
>>>> called.  Everything balanced.
>>> but dvb_frontent_detach doesnt' know anynthing about the tuner (since 
>>> it's in the frontend private data), so if I don't do the put_symbol 
>>> myself in af9005_fe_release (as I do the dvb_attach myself in 
>>> af9005_fe_init) there will be a dangling reference count, yes?
>>>
>>> Bye
>> Luca,
>>
>> You are incorrect -- dvb_frontend_detach has access to the entire "struct
>> dvb_frontend *fe" , and dvb-core will call fe->ops.tuner_ops.release function
>> itself and dvb_frontend_detach will handle the module detachment.
> 
> Yes, but my tuner is in fe->demodulator_priv->tuner (probably a bad 
> design, mind me, but that's was the best I could come up with at the time).
> 
> Bye

Yikes!

OK, I dont want to say anything more until I can give this code a thorough
review.  I'll get back to you as soon as I can -- hopefully it will be within 2
weeks.

Regards,
Mike




More information about the linux-dvb mailing list