===MODEL PATCH ===
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -1078,6 +1078,10 @@ static int smc_getname(struct socket *sock, struct sockaddr *addr,
 	if (peer && (sock->sk->sk_state != SMC_ACTIVE) &&
 	    (sock->sk->sk_state != SMC_APPCLOSEWAIT1))
 		return -ENOTCONN;
+
+	/* Ensure smc is not NULL before accessing its members */
+	if (!smc)
+		return -EINVAL;
 
 	smc = smc_sk(sock->sk);
 

===ORIGINAL PATCH ===
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index f5d4b69dbabc..4470501374bf 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -978,10 +978,6 @@ static void smc_tcp_listen_work(struct work_struct *work)
 	}
 
 out:
-	if (lsmc->clcsock) {
-		sock_release(lsmc->clcsock);
-		lsmc->clcsock = NULL;
-	}
 	release_sock(lsk);
 	sock_put(&lsmc->sk); /* sock_hold in smc_listen */
 }

