diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 137f5fc3e7eb1ba77725a0bf4f33667be86795a3..670e6f3df5893adc1a68f9d5616ea1a837a01fe1 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1469,7 +1469,7 @@ static bool rt_cache_route(struct fib_nh *nh, 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 {