Luca Olivetti wrote: > 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. > > Bye It does explain it -- dvb_frontend_detach is running _and_ your code that calls symbol_put_addr is also running. With both of them occurring, this explains the module ref count being screwed up. Cheers, Mike _______________________________________________ linux-dvb mailing list linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb