lkml.org 
[lkml]   [2012]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 44/66] ipv4: Fix flushing of cached routing informations
    Date
    3.6-stable review patch.  If anyone has any objections, please let me know.

    ------------------


    From: Steffen Klassert <steffen.klassert@secunet.com>

    [ Upstream commit 13d82bf50dce632355fcccafa4fe44a9b5e706d8 ]

    Currently we can not flush cached pmtu/redirect informations via
    the ipv4_sysctl_rtcache_flush sysctl. We need to check the rt_genid
    of the old route and reset the nh exeption if the old route is
    expired when we bind a new route to a nh exeption.

    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/ipv4/route.c | 9 ++++++---
    1 file changed, 6 insertions(+), 3 deletions(-)

    --- a/net/ipv4/route.c
    +++ b/net/ipv4/route.c
    @@ -1166,8 +1166,12 @@ static bool rt_bind_exception(struct rta
    spin_lock_bh(&fnhe_lock);

    if (daddr == fnhe->fnhe_daddr) {
    - struct rtable *orig;
    -
    + struct rtable *orig = rcu_dereference(fnhe->fnhe_rth);
    + if (orig && rt_is_expired(orig)) {
    + fnhe->fnhe_gw = 0;
    + fnhe->fnhe_pmtu = 0;
    + fnhe->fnhe_expires = 0;
    + }
    if (fnhe->fnhe_pmtu) {
    unsigned long expires = fnhe->fnhe_expires;
    unsigned long diff = expires - jiffies;
    @@ -1184,7 +1188,6 @@ static bool rt_bind_exception(struct rta
    } else if (!rt->rt_gateway)
    rt->rt_gateway = daddr;

    - orig = rcu_dereference(fnhe->fnhe_rth);
    rcu_assign_pointer(fnhe->fnhe_rth, rt);
    if (orig)
    rt_free(orig);



    \
     
     \ /
      Last update: 2012-11-15 06:22    [W:4.017 / U:3.424 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site