diff --git a/[refs] b/[refs] index 7b28c7e7b495..5a32d270330f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a36df8a857edee8cd8967cbe99a85574d22f482 +refs/heads/master: fc75fc8339e7727167443469027540b283daac71 diff --git a/trunk/net/ipv4/route.c b/trunk/net/ipv4/route.c index 987bf9adb318..df948b0f1ac9 100644 --- a/trunk/net/ipv4/route.c +++ b/trunk/net/ipv4/route.c @@ -2585,9 +2585,10 @@ static int ip_route_output_slow(struct net *net, struct rtable **rp, goto out; /* RACE: Check return value of inet_select_addr instead. */ - if (rcu_dereference(dev_out->ip_ptr) == NULL) - goto out; /* Wrong error code */ - + if (!(dev_out->flags & IFF_UP) || !__in_dev_get_rcu(dev_out)) { + err = -ENETUNREACH; + goto out; + } if (ipv4_is_local_multicast(oldflp->fl4_dst) || ipv4_is_lbcast(oldflp->fl4_dst)) { if (!fl.fl4_src)