On 28/12/2021 08:49, Wen Gu wrote:
SMC connections might fail to be registered to a link group due to
things like unable to find a link to assign to in its creation. As
a result, connection creation will return a failure and most
resources related to the connection won't be applied or initialized,
such as conn->abort_work or conn->lnk.
I agree with your fix to set conn->lgr to NULL when smc_lgr_register_conn() fails.
It would probably be better to have smc_lgr_register_conn() set conn->lgr instead to set
it before in smc_conn_create(). So it would not be set at all then the registration failes.
What I do not understand is the extra step after the new label out_unreg: that
may invoke smc_lgr_schedule_free_work(). You did not talk about that one.
Is the idea to have a new link group get freed() when a connection could not
be registered on it? In that case I would expect this code after label create:
in smc_lgr_create(), when the rc from smc_lgr_register_conn() is not zero.
Thoughts?