Skip to content
  • Paul E. McKenney's avatar
    mm: Use static initialization for "srcu" · dde8da6c
    Paul E. McKenney authored
    
    
    The MM-notifier code currently dynamically initializes the srcu_struct
    named "srcu" at subsys_initcall() time, and includes a BUG_ON() to check
    this initialization in do_mmu_notifier_register().  Unfortunately, there
    is no foolproof way to verify that an srcu_struct has been initialized,
    given the possibility of an srcu_struct being allocated on the stack or
    on the heap.  This means that creating an srcu_struct_is_initialized()
    function is not a reasonable course of action.  Nor is peppering
    do_mmu_notifier_register() with SRCU-specific #ifdefs an attractive
    alternative.
    
    This commit therefore uses DEFINE_STATIC_SRCU() to initialize
    this srcu_struct at compile time, thus eliminating both the
    subsys_initcall()-time initialization and the runtime BUG_ON().
    
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: <linux-mm@kvack.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Vegard Nossum <vegard.nossum@oracle.com>
    dde8da6c