• R
    module: put modules in list much earlier. · 1fb9341a
    Rusty Russell 提交于
    Prarit's excellent bug report:
    > In recent Fedora releases (F17 & F18) some users have reported seeing
    > messages similar to
    >
    > [   15.478160] kvm: Could not allocate 304 bytes percpu data
    > [   15.478174] PERCPU: allocation failed, size=304 align=32, alloc from
    > reserved chunk failed
    >
    > during system boot.  In some cases, users have also reported seeing this
    > message along with a failed load of other modules.
    >
    > What is happening is systemd is loading an instance of the kvm module for
    > each cpu found (see commit e9bda3b3).  When the module load occurs the kernel
    > currently allocates the modules percpu data area prior to checking to see
    > if the module is already loaded or is in the process of being loaded.  If
    > the module is already loaded, or finishes load, the module loading code
    > releases the current instance's module's percpu data.
    
    Now we have a new state MODULE_STATE_UNFORMED, we can insert the
    module into the list (and thus guarantee its uniqueness) before we
    allocate the per-cpu region.
    Reported-by: NPrarit Bhargava <prarit@redhat.com>
    Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
    Tested-by: NPrarit Bhargava <prarit@redhat.com>
    1fb9341a
module.c 95.0 KB