diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 43ca90d50ae9b315fb89e4a3c2a6770087a3566e..229bfcc451ef5004e9e9d14c071937c1b9658711 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -3632,6 +3632,12 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh)
 		rt = (struct rt6_info *)ip6_route_output(net, NULL, &fl6);
 	}
 
+	if (rt == net->ipv6.ip6_null_entry) {
+		err = rt->dst.error;
+		ip6_rt_put(rt);
+		goto errout;
+	}
+
 	skb = alloc_skb(NLMSG_GOODSIZE, GFP_KERNEL);
 	if (!skb) {
 		ip6_rt_put(rt);