From 7c88d394febfd3afbf1590e507e252484258f26e Mon Sep 17 00:00:00 2001 From: Eric Dumazet Date: Wed, 22 Dec 2010 04:39:39 +0000 Subject: [PATCH] --- yaml --- r: 223655 b: refs/heads/master c: fc75fc8339e7727167443469027540b283daac71 h: refs/heads/master i: 223653: 2f0d141993c301199b6c1031d3e1f49120d1e15b 223651: 8cdd87ed25d6a7ead7ea9aae4824ab3061c3f419 223647: 8baf895b352df86ad24bfc61896a2852d2cf4580 v: v3 --- [refs] | 2 +- trunk/net/ipv4/route.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) 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)