@@ -789,34 +789,32 @@ static void mld_del_delrec(struct inet6_dev *idev, struct ifmcaddr6 *im)
789
789
break ;
790
790
pmc_prev = pmc ;
791
791
}
792
- if (pmc ) {
793
- if (pmc_prev )
794
- rcu_assign_pointer (pmc_prev -> next , pmc -> next );
795
- else
796
- rcu_assign_pointer (idev -> mc_tomb , pmc -> next );
797
- }
798
-
799
- if (pmc ) {
800
- im -> idev = pmc -> idev ;
801
- if (im -> mca_sfmode == MCAST_INCLUDE ) {
802
- tomb = rcu_replace_pointer (im -> mca_tomb ,
803
- mc_dereference (pmc -> mca_tomb , pmc -> idev ),
804
- lockdep_is_held (& im -> idev -> mc_lock ));
805
- rcu_assign_pointer (pmc -> mca_tomb , tomb );
806
-
807
- sources = rcu_replace_pointer (im -> mca_sources ,
808
- mc_dereference (pmc -> mca_sources , pmc -> idev ),
809
- lockdep_is_held (& im -> idev -> mc_lock ));
810
- rcu_assign_pointer (pmc -> mca_sources , sources );
811
- for_each_psf_mclock (im , psf )
812
- psf -> sf_crcount = idev -> mc_qrv ;
813
- } else {
814
- im -> mca_crcount = idev -> mc_qrv ;
815
- }
816
- in6_dev_put (pmc -> idev );
817
- ip6_mc_clear_src (pmc );
818
- kfree_rcu (pmc , rcu );
792
+ if (!pmc )
793
+ return ;
794
+ if (pmc_prev )
795
+ rcu_assign_pointer (pmc_prev -> next , pmc -> next );
796
+ else
797
+ rcu_assign_pointer (idev -> mc_tomb , pmc -> next );
798
+
799
+ im -> idev = pmc -> idev ;
800
+ if (im -> mca_sfmode == MCAST_INCLUDE ) {
801
+ tomb = rcu_replace_pointer (im -> mca_tomb ,
802
+ mc_dereference (pmc -> mca_tomb , pmc -> idev ),
803
+ lockdep_is_held (& im -> idev -> mc_lock ));
804
+ rcu_assign_pointer (pmc -> mca_tomb , tomb );
805
+
806
+ sources = rcu_replace_pointer (im -> mca_sources ,
807
+ mc_dereference (pmc -> mca_sources , pmc -> idev ),
808
+ lockdep_is_held (& im -> idev -> mc_lock ));
809
+ rcu_assign_pointer (pmc -> mca_sources , sources );
810
+ for_each_psf_mclock (im , psf )
811
+ psf -> sf_crcount = idev -> mc_qrv ;
812
+ } else {
813
+ im -> mca_crcount = idev -> mc_qrv ;
819
814
}
815
+ in6_dev_put (pmc -> idev );
816
+ ip6_mc_clear_src (pmc );
817
+ kfree_rcu (pmc , rcu );
820
818
}
821
819
822
820
static void mld_clear_delrec (struct inet6_dev * idev )
0 commit comments