mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-01 08:04:22 +08:00
ipvs: avoid kfree_rcu without 2nd arg
Avoid possible synchronize_rcu() as part from the kfree_rcu() call when 2nd arg is not provided. Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
f6477ec62f
commit
e4d0fe71f5
@ -461,6 +461,7 @@ void ip_vs_stats_free(struct ip_vs_stats *stats);
|
|||||||
|
|
||||||
/* Multiple chains processed in same tick */
|
/* Multiple chains processed in same tick */
|
||||||
struct ip_vs_est_tick_data {
|
struct ip_vs_est_tick_data {
|
||||||
|
struct rcu_head rcu_head;
|
||||||
struct hlist_head chains[IPVS_EST_TICK_CHAINS];
|
struct hlist_head chains[IPVS_EST_TICK_CHAINS];
|
||||||
DECLARE_BITMAP(present, IPVS_EST_TICK_CHAINS);
|
DECLARE_BITMAP(present, IPVS_EST_TICK_CHAINS);
|
||||||
DECLARE_BITMAP(full, IPVS_EST_TICK_CHAINS);
|
DECLARE_BITMAP(full, IPVS_EST_TICK_CHAINS);
|
||||||
|
@ -549,7 +549,7 @@ void ip_vs_stop_estimator(struct netns_ipvs *ipvs, struct ip_vs_stats *stats)
|
|||||||
__set_bit(row, kd->avail);
|
__set_bit(row, kd->avail);
|
||||||
if (!kd->tick_len[row]) {
|
if (!kd->tick_len[row]) {
|
||||||
RCU_INIT_POINTER(kd->ticks[row], NULL);
|
RCU_INIT_POINTER(kd->ticks[row], NULL);
|
||||||
kfree_rcu(td);
|
kfree_rcu(td, rcu_head);
|
||||||
}
|
}
|
||||||
kd->est_count--;
|
kd->est_count--;
|
||||||
if (kd->est_count) {
|
if (kd->est_count) {
|
||||||
|
Loading…
Reference in New Issue
Block a user