diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 6e4a89c5e27edaabe80dc92bc15650b4c4dd1f20..259cbeee9a8be89d5132cb7d781ca214e5eafc00 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -912,6 +912,9 @@ static void __ip_rt_update_pmtu(struct rtable *rt, struct flowi4 *fl4, u32 mtu)
 	struct dst_entry *dst = &rt->dst;
 	struct fib_result res;
 
+	if (dst_metric_locked(dst, RTAX_MTU))
+		return;
+
 	if (dst->dev->mtu < mtu)
 		return;