diff --git a/net/sctp/input.c b/net/sctp/input.c
index 92a07141fd07396a816478569f6de18a2aa13ebb..34f10e75f3b951a6fce87092a9af58dddb1f891b 100644
--- a/net/sctp/input.c
+++ b/net/sctp/input.c
@@ -421,7 +421,7 @@ void sctp_icmp_redirect(struct sock *sk, struct sctp_transport *t,
 {
 	struct dst_entry *dst;
 
-	if (!t)
+	if (sock_owned_by_user(sk) || !t)
 		return;
 	dst = sctp_transport_dst_check(t);
 	if (dst)