[linux-dvb] af9005/mt2060 module unload failure
Michael Krufky
mkrufky at linuxtv.org
Thu Jun 14 18:40:00 CEST 2007
Michael Krufky wrote:
> Luca Olivetti wrote:
>> En/na Olaf Titz ha escrit:
>>> This sequence:
>>> modprobe dvb_usb_af9005
>>> sleep 60
>>> modprobe -r dvb_usb_af9005
>>>
>>> leaves the following residue:
>>> Module Size Used by
>>> mt2060 5572 4294967295
>>> (the number is "unsigned int" for -1)
>> This is probably due to this code in af9005-fe.c:
>>
>> static void af9005_fe_release(struct dvb_frontend *fe)
>> {
>> struct af9005_fe_state *state =
>> (struct af9005_fe_state *)fe->demodulator_priv;
>> if (state->tuner != NULL && state->tuner->ops.tuner_ops.release
>> != NULL) {
>> state->tuner->ops.tuner_ops.release(state->tuner);
>> #ifdef CONFIG_DVB_CORE_ATTACH
>> symbol_put_addr(state->tuner->ops.tuner_ops.release);
>> #endif
>> }
>> kfree(state);
>> }
>>
>> specifically the symbol_put_addr, but this is the same thing I saw in
>> dvb_attach so I don't know why it doesn't work here (in fact I had no
>> such problem while testing, but some users reported it).
>>
>>> Subsequent re-loading of the modules succeeds but then accessing the
>>> tuner fails, likely due to this error.
>> it shouldn't matter.
>>
>> Bye
>
> Luca,
>
> 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?
--
Michael Krufky
More information about the linux-dvb
mailing list