mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-01 00:58:39 +02:00 
			
		
		
		
	ipv6: mcast: Avoid a duplicate pointer check in mld_del_delrec()
Avoid duplicate non-null pointer check for pmc in mld_del_delrec(). No functional changes. Signed-off-by: Yue Haibing <yuehaibing@huawei.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20250714081949.3109947-1-yuehaibing@huawei.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
		
							parent
							
								
									06baf9bfa6
								
							
						
					
					
						commit
						a8594c956c
					
				
					 1 changed files with 23 additions and 25 deletions
				
			
		|  | @ -789,34 +789,32 @@ static void mld_del_delrec(struct inet6_dev *idev, struct ifmcaddr6 *im) | |||
| 			break; | ||||
| 		pmc_prev = pmc; | ||||
| 	} | ||||
| 	if (pmc) { | ||||
| 		if (pmc_prev) | ||||
| 			rcu_assign_pointer(pmc_prev->next, pmc->next); | ||||
| 		else | ||||
| 			rcu_assign_pointer(idev->mc_tomb, pmc->next); | ||||
| 	} | ||||
| 	if (!pmc) | ||||
| 		return; | ||||
| 	if (pmc_prev) | ||||
| 		rcu_assign_pointer(pmc_prev->next, pmc->next); | ||||
| 	else | ||||
| 		rcu_assign_pointer(idev->mc_tomb, pmc->next); | ||||
| 
 | ||||
| 	if (pmc) { | ||||
| 		im->idev = pmc->idev; | ||||
| 		if (im->mca_sfmode == MCAST_INCLUDE) { | ||||
| 			tomb = rcu_replace_pointer(im->mca_tomb, | ||||
| 						   mc_dereference(pmc->mca_tomb, pmc->idev), | ||||
| 						   lockdep_is_held(&im->idev->mc_lock)); | ||||
| 			rcu_assign_pointer(pmc->mca_tomb, tomb); | ||||
| 	im->idev = pmc->idev; | ||||
| 	if (im->mca_sfmode == MCAST_INCLUDE) { | ||||
| 		tomb = rcu_replace_pointer(im->mca_tomb, | ||||
| 					   mc_dereference(pmc->mca_tomb, pmc->idev), | ||||
| 					   lockdep_is_held(&im->idev->mc_lock)); | ||||
| 		rcu_assign_pointer(pmc->mca_tomb, tomb); | ||||
| 
 | ||||
| 			sources = rcu_replace_pointer(im->mca_sources, | ||||
| 						      mc_dereference(pmc->mca_sources, pmc->idev), | ||||
| 						      lockdep_is_held(&im->idev->mc_lock)); | ||||
| 			rcu_assign_pointer(pmc->mca_sources, sources); | ||||
| 			for_each_psf_mclock(im, psf) | ||||
| 				psf->sf_crcount = idev->mc_qrv; | ||||
| 		} else { | ||||
| 			im->mca_crcount = idev->mc_qrv; | ||||
| 		} | ||||
| 		in6_dev_put(pmc->idev); | ||||
| 		ip6_mc_clear_src(pmc); | ||||
| 		kfree_rcu(pmc, rcu); | ||||
| 		sources = rcu_replace_pointer(im->mca_sources, | ||||
| 					      mc_dereference(pmc->mca_sources, pmc->idev), | ||||
| 					      lockdep_is_held(&im->idev->mc_lock)); | ||||
| 		rcu_assign_pointer(pmc->mca_sources, sources); | ||||
| 		for_each_psf_mclock(im, psf) | ||||
| 			psf->sf_crcount = idev->mc_qrv; | ||||
| 	} else { | ||||
| 		im->mca_crcount = idev->mc_qrv; | ||||
| 	} | ||||
| 	in6_dev_put(pmc->idev); | ||||
| 	ip6_mc_clear_src(pmc); | ||||
| 	kfree_rcu(pmc, rcu); | ||||
| } | ||||
| 
 | ||||
| static void mld_clear_delrec(struct inet6_dev *idev) | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Yue Haibing
						Yue Haibing