Loading net/ipv6/route.c +6 −8 Original line number Original line Diff line number Diff line Loading @@ -2725,10 +2725,9 @@ static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, rcu_read_lock(); rcu_read_lock(); res.f6i = rcu_dereference(rt6->from); res.f6i = rcu_dereference(rt6->from); if (!res.f6i) { if (!res.f6i) rcu_read_unlock(); goto out_unlock; return; } res.fib6_flags = res.f6i->fib6_flags; res.fib6_flags = res.f6i->fib6_flags; res.fib6_type = res.f6i->fib6_type; res.fib6_type = res.f6i->fib6_type; Loading @@ -2744,10 +2743,8 @@ static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, /* fib6_info uses a nexthop that does not have fib6_nh /* fib6_info uses a nexthop that does not have fib6_nh * using the dst->dev + gw. Should be impossible. * using the dst->dev + gw. Should be impossible. */ */ if (!arg.match) { if (!arg.match) rcu_read_unlock(); goto out_unlock; return; } res.nh = arg.match; res.nh = arg.match; } else { } else { Loading @@ -2760,6 +2757,7 @@ static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, if (rt6_insert_exception(nrt6, &res)) if (rt6_insert_exception(nrt6, &res)) dst_release_immediate(&nrt6->dst); dst_release_immediate(&nrt6->dst); } } out_unlock: rcu_read_unlock(); rcu_read_unlock(); } } } } Loading Loading
net/ipv6/route.c +6 −8 Original line number Original line Diff line number Diff line Loading @@ -2725,10 +2725,9 @@ static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, rcu_read_lock(); rcu_read_lock(); res.f6i = rcu_dereference(rt6->from); res.f6i = rcu_dereference(rt6->from); if (!res.f6i) { if (!res.f6i) rcu_read_unlock(); goto out_unlock; return; } res.fib6_flags = res.f6i->fib6_flags; res.fib6_flags = res.f6i->fib6_flags; res.fib6_type = res.f6i->fib6_type; res.fib6_type = res.f6i->fib6_type; Loading @@ -2744,10 +2743,8 @@ static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, /* fib6_info uses a nexthop that does not have fib6_nh /* fib6_info uses a nexthop that does not have fib6_nh * using the dst->dev + gw. Should be impossible. * using the dst->dev + gw. Should be impossible. */ */ if (!arg.match) { if (!arg.match) rcu_read_unlock(); goto out_unlock; return; } res.nh = arg.match; res.nh = arg.match; } else { } else { Loading @@ -2760,6 +2757,7 @@ static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk, if (rt6_insert_exception(nrt6, &res)) if (rt6_insert_exception(nrt6, &res)) dst_release_immediate(&nrt6->dst); dst_release_immediate(&nrt6->dst); } } out_unlock: rcu_read_unlock(); rcu_read_unlock(); } } } } Loading