ipv6: release dst on error in ip6_dst_lookup_tail

If ip6_dst_lookup_tail has acquired a dst and fails the IPv4-mapped
check, release the dst before returning an error.

Fixes: ec5e3b0a1d41 ("ipv6: Inhibit IPv4-mapped src address on the wire.")
Signed-off-by: Willem de Bruijn <willemb@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by Willem de Bruijn and committed by David S. Miller 00ea1cee 2763f92f

Changed files
+4 -2
net
+4 -2
net/ipv6/ip6_output.c
··· 1022 1022 } 1023 1023 #endif 1024 1024 if (ipv6_addr_v4mapped(&fl6->saddr) && 1025 - !(ipv6_addr_v4mapped(&fl6->daddr) || ipv6_addr_any(&fl6->daddr))) 1026 - return -EAFNOSUPPORT; 1025 + !(ipv6_addr_v4mapped(&fl6->daddr) || ipv6_addr_any(&fl6->daddr))) { 1026 + err = -EAFNOSUPPORT; 1027 + goto out_err_release; 1028 + } 1027 1029 1028 1030 return 0; 1029 1031