|
|
@@ -190,6 +190,17 @@ static void ip_ma_put(struct ip_mc_list *im)
|
|
|
pmc != NULL; \
|
|
|
pmc = rtnl_dereference(pmc->next_rcu))
|
|
|
|
|
|
+static void ip_sf_list_clear_all(struct ip_sf_list *psf)
|
|
|
+{
|
|
|
+ struct ip_sf_list *next;
|
|
|
+
|
|
|
+ while (psf) {
|
|
|
+ next = psf->sf_next;
|
|
|
+ kfree(psf);
|
|
|
+ psf = next;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
#ifdef CONFIG_IP_MULTICAST
|
|
|
|
|
|
/*
|
|
|
@@ -635,17 +646,6 @@ static void igmpv3_clear_zeros(struct ip_sf_list **ppsf)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-static void ip_sf_list_clear_all(struct ip_sf_list *psf)
|
|
|
-{
|
|
|
- struct ip_sf_list *next;
|
|
|
-
|
|
|
- while (psf) {
|
|
|
- next = psf->sf_next;
|
|
|
- kfree(psf);
|
|
|
- psf = next;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static void kfree_pmc(struct ip_mc_list *pmc)
|
|
|
{
|
|
|
ip_sf_list_clear_all(pmc->sources);
|