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;
 	}
 }