-
由 Rusty Russell 提交于
This fixes "gave up waiting for init of module libcrc32c." which happened at boot time due to multiple parallel module loads. The problem was a deadlock: we wait for a module to finish initializing, but we keep the module_lock mutex so it can't complete. In particular, this could reasonably happen if a module does a request_module() in its initialization routine. So we change use_module() to return an errno rather than a bool, and if it's -EBUSY we drop the lock and wait in the caller, then reaquire the lock. Reported-by: NBrandon Philips <brandon@ifup.org> Signed-off-by: NRusty Russell <rusty@rustcorp.com.au> Tested-by: NBrandon Philips <brandon@ifup.org>
480b02df