From: Karsten Graul <kgraul@xxxxxxxxxxxxx> Date: Tue, 25 Feb 2020 16:34:36 +0100 > From: Ursula Braun <ubraun@xxxxxxxxxxxxx> > > If an SMC connection to a certain peer is setup the first time, > a new linkgroup is created. In case of setup failures, such a > linkgroup is unusable and should disappear. As a first step the > linkgroup is removed from the linkgroup list in smc_lgr_forget(). > > There are 2 problems: > smc_listen_decline() might be called before linkgroup creation > resulting in a crash due to calling smc_lgr_forget() with > parameter NULL. > If a setup failure occurs after linkgroup creation, the connection > is never unregistered from the linkgroup, preventing linkgroup > freeing. > > This patch introduces an enhanced smc_lgr_cleanup_early() function > which > * contains a linkgroup check for early smc_listen_decline() > invocations > * invokes smc_conn_free() to guarantee unregistering of the > connection. > * schedules fast linkgroup removal of the unusable linkgroup > > And the unused function smcd_conn_free() is removed from smc_core.h. > > Fixes: 3b2dec2603d5b ("net/smc: restructure client and server code in af_smc") > Fixes: 2a0674fffb6bc ("net/smc: improve abnormal termination of link groups") > Signed-off-by: Ursula Braun <ubraun@xxxxxxxxxxxxx> > Signed-off-by: Karsten Graul <kgraul@xxxxxxxxxxxxx> Applied and queued up for -stable, thanks.