diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 1fd784f3e2ecf4dba2f48dd6ff134172b80df0d5..47123bf5eb0fb439a944cfbcfe99112b97e157d1 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -848,12 +848,14 @@ do_append_data:
 		} else {
 			dst_release(dst);
 		}
+		dst = NULL;
 	}
 
 	if (err > 0)
 		err = np->recverr ? net_xmit_errno(err) : 0;
 	release_sock(sk);
 out:
+	dst_release(dst);
 	fl6_sock_release(flowlabel);
 	if (!err)
 		return len;