mirror of https://gitee.com/openkylin/linux.git
ipv4: Remove redundant RCU locking in ip_check_mc().
All callers are under rcu_read_lock() protection already. Rename to ip_check_mc_rcu() to make it even more clear. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
33175d84ee
commit
dbdd9a52e3
|
@ -217,7 +217,7 @@ struct ip_mc_list {
|
|||
#define IGMPV3_QQIC(value) IGMPV3_EXP(0x80, 4, 3, value)
|
||||
#define IGMPV3_MRC(value) IGMPV3_EXP(0x80, 4, 3, value)
|
||||
|
||||
extern int ip_check_mc(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u16 proto);
|
||||
extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u16 proto);
|
||||
extern int igmp_rcv(struct sk_buff *);
|
||||
extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr);
|
||||
extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr);
|
||||
|
|
|
@ -2333,13 +2333,13 @@ void ip_mc_drop_socket(struct sock *sk)
|
|||
rtnl_unlock();
|
||||
}
|
||||
|
||||
int ip_check_mc(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u16 proto)
|
||||
/* called with rcu_read_lock() */
|
||||
int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u16 proto)
|
||||
{
|
||||
struct ip_mc_list *im;
|
||||
struct ip_sf_list *psf;
|
||||
int rv = 0;
|
||||
|
||||
rcu_read_lock();
|
||||
for_each_pmc_rcu(in_dev, im) {
|
||||
if (im->multiaddr == mc_addr)
|
||||
break;
|
||||
|
@ -2361,7 +2361,6 @@ int ip_check_mc(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u16 p
|
|||
} else
|
||||
rv = 1; /* unspecified source; tentatively allow */
|
||||
}
|
||||
rcu_read_unlock();
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
|
@ -2309,8 +2309,8 @@ int ip_route_input_common(struct sk_buff *skb, __be32 daddr, __be32 saddr,
|
|||
struct in_device *in_dev = __in_dev_get_rcu(dev);
|
||||
|
||||
if (in_dev) {
|
||||
int our = ip_check_mc(in_dev, daddr, saddr,
|
||||
ip_hdr(skb)->protocol);
|
||||
int our = ip_check_mc_rcu(in_dev, daddr, saddr,
|
||||
ip_hdr(skb)->protocol);
|
||||
if (our
|
||||
#ifdef CONFIG_IP_MROUTE
|
||||
||
|
||||
|
@ -2368,8 +2368,8 @@ static struct rtable *__mkroute_output(const struct fib_result *res,
|
|||
fi = NULL;
|
||||
} else if (type == RTN_MULTICAST) {
|
||||
flags |= RTCF_MULTICAST | RTCF_LOCAL;
|
||||
if (!ip_check_mc(in_dev, oldflp->fl4_dst, oldflp->fl4_src,
|
||||
oldflp->proto))
|
||||
if (!ip_check_mc_rcu(in_dev, oldflp->fl4_dst, oldflp->fl4_src,
|
||||
oldflp->proto))
|
||||
flags &= ~RTCF_LOCAL;
|
||||
/* If multicast route do not exist use
|
||||
* default one, but do not gateway in this case.
|
||||
|
|
Loading…
Reference in New Issue