• Jon Paul Maloy's avatar
    tipc: correct the order of stopping services at rmmod · 993b858e
    Jon Paul Maloy authored
    The 'signal handler' service in TIPC is a mechanism that makes it
    possible to postpone execution of functions, by launcing them into
    a job queue for execution in a separate tasklet, independent of
    the launching execution thread.
    
    When we do rmmod on the tipc module, this service is stopped after
    the network service. At the same time, the stopping of the network
    service may itself launch jobs for execution, with the risk that these
    functions may be scheduled for execution after the data structures
    meant to be accessed by the job have already been deleted. We have
    seen this happen, most often resulting in an oops.
    
    This commit ensures that the signal handler is the very first to be
    stopped when TIPC is shut down, so there are no surprises during
    the cleanup of the other services.
    Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
    Reviewed-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    993b858e
core.c 5.05 KB