[linux-dvb] af9005/mt2060 module unload failure
luca at ventoso.org
Thu Jun 14 23:50:10 CEST 2007
En/na Trent Piepho ha escrit:
> Exactly, the dvb_frontend struct contains the tuner. In fact, the pointer
> returned by the tuner attach functions is just the dvb_frontend pointer you
> passed in. The tuner attach functions don't return a new tuner object (there
> is no dvb_tuner object), they add the tuner functions into the frontend. One
> could have a frontend with no tuner.
> In af9005_fe_set_frontend(), you do this:
> ret = state->tuner->ops.tuner_ops.set_params(state->tuner, fep);
> What you should do is:
> ret = fe->ops.tuner_ops.set_params(state->tuner, fep);
> I don't think you need the state->tuner field really. Just replace all the
> "state->tuner->ops..." with "fe->ops...". And change (state->tuner != NULL)
> to (fe->ops.tuner_ops.release != NULL), or add a one bit flag
> state->tuner_is_attached and use that.
Ok, that could be an idea, but it wouldn't explain why my
symbol_put_addr messes up the reference count, while the same exact
thing done in dvb_frontend_detach wouldn't.
More information about the linux-dvb