diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c index 284befa..a2611e8 100644 --- a/net/smc/af_smc.c +++ b/net/smc/af_smc.c @@ -133,9 +133,17 @@ struct proto smc_proto6 = { static void smc_restore_fallback_changes(struct smc_sock *smc) { + struct sock *clcsk = smc->clcsock->sk; + if (smc->clcsock->file) { /* non-accepted sockets have no file yet */ smc->clcsock->file->private_data = smc->sk.sk_socket; smc->clcsock->file = NULL; + + clcsk->sk_user_data = NULL; + clcsk->sk_state_change = smc->clcsk_state_change; + clcsk->sk_data_ready = smc->clcsk_data_ready; + clcsk->sk_write_space = smc->clcsk_write_space; + clcsk->sk_error_report = smc->clcsk_error_report; } }