|
@@ -934,12 +934,14 @@ static u32 __ip_rt_update_pmtu(struct rtable *rt, struct flowi4 *fl4, u32 mtu)
|
|
if (mtu < ip_rt_min_pmtu)
|
|
if (mtu < ip_rt_min_pmtu)
|
|
mtu = ip_rt_min_pmtu;
|
|
mtu = ip_rt_min_pmtu;
|
|
|
|
|
|
|
|
+ rcu_read_lock();
|
|
if (fib_lookup(dev_net(rt->dst.dev), fl4, &res) == 0) {
|
|
if (fib_lookup(dev_net(rt->dst.dev), fl4, &res) == 0) {
|
|
struct fib_nh *nh = &FIB_RES_NH(res);
|
|
struct fib_nh *nh = &FIB_RES_NH(res);
|
|
|
|
|
|
update_or_create_fnhe(nh, fl4->daddr, 0, mtu,
|
|
update_or_create_fnhe(nh, fl4->daddr, 0, mtu,
|
|
jiffies + ip_rt_mtu_expires);
|
|
jiffies + ip_rt_mtu_expires);
|
|
}
|
|
}
|
|
|
|
+ rcu_read_unlock();
|
|
return mtu;
|
|
return mtu;
|
|
}
|
|
}
|
|
|
|
|