|
@@ -149,17 +149,11 @@ static void ip_mc_clear_src(struct ip_mc_list *pmc);
|
|
static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
|
|
static int ip_mc_add_src(struct in_device *in_dev, __be32 *pmca, int sfmode,
|
|
int sfcount, __be32 *psfsrc, int delta);
|
|
int sfcount, __be32 *psfsrc, int delta);
|
|
|
|
|
|
-
|
|
|
|
-static void ip_mc_list_reclaim(struct rcu_head *head)
|
|
|
|
-{
|
|
|
|
- kfree(container_of(head, struct ip_mc_list, rcu));
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static void ip_ma_put(struct ip_mc_list *im)
|
|
static void ip_ma_put(struct ip_mc_list *im)
|
|
{
|
|
{
|
|
if (atomic_dec_and_test(&im->refcnt)) {
|
|
if (atomic_dec_and_test(&im->refcnt)) {
|
|
in_dev_put(im->interface);
|
|
in_dev_put(im->interface);
|
|
- call_rcu(&im->rcu, ip_mc_list_reclaim);
|
|
|
|
|
|
+ kfree_rcu(im, rcu);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|