diff --git a/[refs] b/[refs] index 99e17137ebbc..1e599edf5df0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e6f26129ebbb0071016e2526036f42036ccf30e1 +refs/heads/master: 9fc3bbb4a752f108cf096d96640f3b548bbbce6c diff --git a/trunk/net/ipv4/route.c b/trunk/net/ipv4/route.c index df948b0f1ac9..93bfd95584f4 100644 --- a/trunk/net/ipv4/route.c +++ b/trunk/net/ipv4/route.c @@ -2649,8 +2649,12 @@ static int ip_route_output_slow(struct net *net, struct rtable **rp, } if (res.type == RTN_LOCAL) { - if (!fl.fl4_src) - fl.fl4_src = fl.fl4_dst; + if (!fl.fl4_src) { + if (res.fi->fib_prefsrc) + fl.fl4_src = res.fi->fib_prefsrc; + else + fl.fl4_src = fl.fl4_dst; + } dev_out = net->loopback_dev; fl.oif = dev_out->ifindex; res.fi = NULL;