[ Please quote and break your lines appropriately ] Richard MUSIL wrote: > Patrick McHardy wrote: >> >>The usual way to do this for auto-loading of modules that register >>things that take a mutex that is already held during netlink queue >>processing, like qdiscs, classifiers, .. is: >> >>- look for <qdisc/classifier/...>, if not found: >>- drop mutex (using the __ unlock variant to avoid reentering queue >>processing) >>- perform module loading (which takes the mutex and registers itself) >>- grab mutex again >>- look for <qdisc/classifier/...> again >>- if not found return -ENOENT >>- if found drop reference, return -EAGAIN >> >>The caller is changed to handle -EAGAIN by replaying the entire >>request. Your problem sounds very similar, look at net/sched/sch_api.c >>for an example. > > > The aforementioned mutex is local to genetlink module, so I cannot > temporarily drop it, call the stuff and grab it again (which was mine > original thought too).
Export the lock/unlock/.. functions. You'll also need a new version similar to __rtnl_unlock. - 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