> >> This is a rather unusual problem that can come up when fallback=true BEFORE smc_connect() > >> is called. But nevertheless, it is a problem. > >> > >> Right now I am not sure if it is okay when we NOT hold a ref to smc->sk during all fallback > >> processing. This change also conflicts with a patch that is already on net-next (3aba1030). > > > > Do you mean put the ref to smc->sk during all fallback processing unconditionally and remove > > the fallback branch sock_put() in __smc_release()? > > What I had in mind was to eventually call sock_put() in __smc_release() even if sk->sk_state == SMC_INIT > (currently the extra check in the if() for sk->sk_state != SMC_INIT prevents the sock_put()), but only > when it is sure that we actually reached the sock_hold() in smc_connect() before. > > But maybe we find out that the sock_hold() is not needed for fallback sockets, I don't know... I do think the sock_hold()/sock_put() for smc->sk is a bit complicated, Emm, I'm not sure if it can be simplified.. In fact, I'm sure there must be another ref count issue in my environment,but I haven't caught it yet.