diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 5bc172abd143feb2d566ec6cb74cca8c88750a04..621f83434b2494784ec2b92824a2743be8817e21 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1482,7 +1482,7 @@ static bool rt_cache_route(struct fib_nh_common *nhc, struct rtable *rt)
 	prev = cmpxchg(p, orig, rt);
 	if (prev == orig) {
 		if (orig) {
-			dst_dev_put(&orig->dst);
+			rt_add_uncached_list(orig);
 			dst_release(&orig->dst);
 		}
 	} else {