Skip to content

Commit

Permalink
ipv4: Move rcu_read_{lock,unlock}() into ip_route_output_slow().
Browse files Browse the repository at this point in the history
Simplifies tail of __ip_route_output_key().

Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
David S. Miller committed Feb 17, 2011
1 parent 5ada552 commit 010c270
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions net/ipv4/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -2456,6 +2456,7 @@ static int ip_route_output_slow(struct net *net, struct rtable **rp,
res.r = NULL;
#endif

rcu_read_lock();
if (oldflp->fl4_src) {
err = -EINVAL;
if (ipv4_is_multicast(oldflp->fl4_src) ||
Expand Down Expand Up @@ -2617,15 +2618,16 @@ static int ip_route_output_slow(struct net *net, struct rtable **rp,
err = rt_intern_hash(hash, rth, rp, NULL, oldflp->oif);
}

out: return err;
out:
rcu_read_unlock();
return err;
}

int __ip_route_output_key(struct net *net, struct rtable **rp,
const struct flowi *flp)
{
unsigned int hash;
int res;
struct rtable *rth;
unsigned int hash;

if (!rt_caching(net))
goto slow_output;
Expand Down Expand Up @@ -2655,10 +2657,7 @@ int __ip_route_output_key(struct net *net, struct rtable **rp,
rcu_read_unlock_bh();

slow_output:
rcu_read_lock();
res = ip_route_output_slow(net, rp, flp);
rcu_read_unlock();
return res;
return ip_route_output_slow(net, rp, flp);
}
EXPORT_SYMBOL_GPL(__ip_route_output_key);

Expand Down

0 comments on commit 010c270

Please sign in to comment.