Message ID | 20101115.085254.104057401.davem@davemloft.net |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Le lundi 15 novembre 2010 à 08:52 -0800, David Miller a écrit : > From: Stephen Rothwell <sfr@canb.auug.org.au> > Date: Mon, 15 Nov 2010 11:46:51 +1100 > > > Caused by commit 1d7138de878d1d4210727c1200193e69596f93b3 ("igmp: RCU > > conversion of in_dev->mc_list"). The for_each_pmc_rtnl and > > for_each_pmc_rcu definitions are protected by CONFIG_IP_MULTICAST, but > > the uses are not ... > > Thanks for the report, I've pushed the following fix: > > -------------------- > ipv4: Fix build with multicast disabled. > > net/ipv4/igmp.c: In function 'ip_mc_inc_group': > net/ipv4/igmp.c:1228: error: implicit declaration of function 'for_each_pmc_rtnl' > net/ipv4/igmp.c:1228: error: expected ';' before '{' token > net/ipv4/igmp.c: In function 'ip_mc_unmap': > net/ipv4/igmp.c:1333: error: expected ';' before 'igmp_group_dropped' > ... > > Move for_each_pmc_rcu and for_each_pmc_rtnl macro definitions > outside of multicast ifdef protection. > > Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> > Signed-off-by: David S. Miller <davem@davemloft.net> > --- > Oops thats right, sorry David, I missed this message. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c index 0f0e0f0..a1bf2f4 100644 --- a/net/ipv4/igmp.c +++ b/net/ipv4/igmp.c @@ -163,6 +163,16 @@ static void ip_ma_put(struct ip_mc_list *im) } } +#define for_each_pmc_rcu(in_dev, pmc) \ + for (pmc = rcu_dereference(in_dev->mc_list); \ + pmc != NULL; \ + pmc = rcu_dereference(pmc->next_rcu)) + +#define for_each_pmc_rtnl(in_dev, pmc) \ + for (pmc = rtnl_dereference(in_dev->mc_list); \ + pmc != NULL; \ + pmc = rtnl_dereference(pmc->next_rcu)) + #ifdef CONFIG_IP_MULTICAST /* @@ -502,16 +512,6 @@ empty_source: return skb; } -#define for_each_pmc_rcu(in_dev, pmc) \ - for (pmc = rcu_dereference(in_dev->mc_list); \ - pmc != NULL; \ - pmc = rcu_dereference(pmc->next_rcu)) - -#define for_each_pmc_rtnl(in_dev, pmc) \ - for (pmc = rtnl_dereference(in_dev->mc_list); \ - pmc != NULL; \ - pmc = rtnl_dereference(pmc->next_rcu)) - static int igmpv3_send_report(struct in_device *in_dev, struct ip_mc_list *pmc) { struct sk_buff *skb = NULL;