[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