mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00: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;
|
break;
|
||||||
pmc_prev = pmc;
|
pmc_prev = pmc;
|
||||||
}
|
}
|
||||||
if (pmc) {
|
if (!pmc)
|
||||||
if (pmc_prev)
|
return;
|
||||||
rcu_assign_pointer(pmc_prev->next, pmc->next);
|
if (pmc_prev)
|
||||||
else
|
rcu_assign_pointer(pmc_prev->next, pmc->next);
|
||||||
rcu_assign_pointer(idev->mc_tomb, pmc->next);
|
else
|
||||||
}
|
rcu_assign_pointer(idev->mc_tomb, pmc->next);
|
||||||
|
|
||||||
if (pmc) {
|
im->idev = pmc->idev;
|
||||||
im->idev = pmc->idev;
|
if (im->mca_sfmode == MCAST_INCLUDE) {
|
||||||
if (im->mca_sfmode == MCAST_INCLUDE) {
|
tomb = rcu_replace_pointer(im->mca_tomb,
|
||||||
tomb = rcu_replace_pointer(im->mca_tomb,
|
mc_dereference(pmc->mca_tomb, pmc->idev),
|
||||||
mc_dereference(pmc->mca_tomb, pmc->idev),
|
lockdep_is_held(&im->idev->mc_lock));
|
||||||
lockdep_is_held(&im->idev->mc_lock));
|
rcu_assign_pointer(pmc->mca_tomb, tomb);
|
||||||
rcu_assign_pointer(pmc->mca_tomb, tomb);
|
|
||||||
|
|
||||||
sources = rcu_replace_pointer(im->mca_sources,
|
sources = rcu_replace_pointer(im->mca_sources,
|
||||||
mc_dereference(pmc->mca_sources, pmc->idev),
|
mc_dereference(pmc->mca_sources, pmc->idev),
|
||||||
lockdep_is_held(&im->idev->mc_lock));
|
lockdep_is_held(&im->idev->mc_lock));
|
||||||
rcu_assign_pointer(pmc->mca_sources, sources);
|
rcu_assign_pointer(pmc->mca_sources, sources);
|
||||||
for_each_psf_mclock(im, psf)
|
for_each_psf_mclock(im, psf)
|
||||||
psf->sf_crcount = idev->mc_qrv;
|
psf->sf_crcount = idev->mc_qrv;
|
||||||
} else {
|
} else {
|
||||||
im->mca_crcount = idev->mc_qrv;
|
im->mca_crcount = idev->mc_qrv;
|
||||||
}
|
|
||||||
in6_dev_put(pmc->idev);
|
|
||||||
ip6_mc_clear_src(pmc);
|
|
||||||
kfree_rcu(pmc, rcu);
|
|
||||||
}
|
}
|
||||||
|
in6_dev_put(pmc->idev);
|
||||||
|
ip6_mc_clear_src(pmc);
|
||||||
|
kfree_rcu(pmc, rcu);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mld_clear_delrec(struct inet6_dev *idev)
|
static void mld_clear_delrec(struct inet6_dev *idev)
|
||||||
|
|
Loading…
Add table
Reference in a new issue