Modules and race conditions Consider a typical module initialization: Find device Register /proc interface Register character device Allocate resources There are race conditions here Module can be accessed during initialization Internal state may be inconsistent The initialization could fail at a later step These races can cause crashes Module unloading is even worse