• Alexander Aring's avatar
    srcu: Use export for srcu_struct defined by DEFINE_STATIC_SRCU() · db8f1471
    Alexander Aring authored
    If an srcu_struct structure defined by tree SRCU's DEFINE_STATIC_SRCU()
    is used by a module, sparse will give the following diagnostic:
    
    sparse: symbol '__srcu_struct_nodes_srcu' was not declared. Should it be static?
    
    The problem is that a within-module DEFINE_STATIC_SRCU() must define
    a non-static srcu_struct because it is exported by referencing it in a
    special '__section("___srcu_struct_ptrs")'.  This reference is needed
    so that module load and unloading can invoke init_srcu_struct() and
    cleanup_srcu_struct(), respectively.  Unfortunately, sparse is unaware of
    '__section("___srcu_struct_ptrs")', resulting in the above false-positive
    diagnostic.  To avoid this false positive, this commit therefore creates
    a prototype of the srcu_struct with an "extern" keyword.
    Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    db8f1471
srcutree.h 5.22 KB