Jay Vosburgh wrote: > Moni Shoua <[EMAIL PROTECTED]> wrote: > >> When bonding enslaves non Ethernet devices it takes pointers to functions >> in the module that owns the slaves. In this case it becomes unsafe >> to keep the bonding master registered after last slave was unenslaved >> because we don't know if the pointers are still valid. Destroying the bond >> when slave_cnt is zero >> ensures that these functions be used anymore. > > Would it not be simpler to run the bonding master through > ether_setup() again when the final slave is released (to reset all of > the pointers to their "ethernet" values)? I'm presuming here the > pointers of questionable validity are the ones set in the > bond_setup_by_slave() copied from the slave_dev->hard_header, et al. > > Having the bonding master disappear (but only sometimes) after > the last slave is removed is a semantic change I'd rather not introduce > if it's not necessary.
Thanks for the comments. Having the master disappear is one way I could think of to solve the problem of leaving the bonding module with pointers to illegal addresses. The other way is to increase the usage count, with try_module_get(), of the module which owns of the slave. To do that I have to restore the field owner in structure net_device (it was removed in 2.6). Do you prefer the second approach? I wasn't sure about that. - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html