Loading net/netfilter/ipvs/ip_vs_conn.c +9 −1 Original line number Original line Diff line number Diff line Loading @@ -776,8 +776,16 @@ static void ip_vs_conn_expire(unsigned long data) if (cp->control) if (cp->control) ip_vs_control_del(cp); ip_vs_control_del(cp); if (cp->flags & IP_VS_CONN_F_NFCT) if (cp->flags & IP_VS_CONN_F_NFCT) { ip_vs_conn_drop_conntrack(cp); ip_vs_conn_drop_conntrack(cp); /* Do not access conntracks during subsys cleanup * because nf_conntrack_find_get can not be used after * conntrack cleanup for the net. */ smp_rmb(); if (ipvs->enable) ip_vs_conn_drop_conntrack(cp); } ip_vs_pe_put(cp->pe); ip_vs_pe_put(cp->pe); kfree(cp->pe_data); kfree(cp->pe_data); Loading net/netfilter/ipvs/ip_vs_core.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1945,6 +1945,7 @@ static void __net_exit __ip_vs_dev_cleanup(struct net *net) { { EnterFunction(2); EnterFunction(2); net_ipvs(net)->enable = 0; /* Disable packet reception */ net_ipvs(net)->enable = 0; /* Disable packet reception */ smp_wmb(); __ip_vs_sync_cleanup(net); __ip_vs_sync_cleanup(net); LeaveFunction(2); LeaveFunction(2); } } Loading Loading
net/netfilter/ipvs/ip_vs_conn.c +9 −1 Original line number Original line Diff line number Diff line Loading @@ -776,8 +776,16 @@ static void ip_vs_conn_expire(unsigned long data) if (cp->control) if (cp->control) ip_vs_control_del(cp); ip_vs_control_del(cp); if (cp->flags & IP_VS_CONN_F_NFCT) if (cp->flags & IP_VS_CONN_F_NFCT) { ip_vs_conn_drop_conntrack(cp); ip_vs_conn_drop_conntrack(cp); /* Do not access conntracks during subsys cleanup * because nf_conntrack_find_get can not be used after * conntrack cleanup for the net. */ smp_rmb(); if (ipvs->enable) ip_vs_conn_drop_conntrack(cp); } ip_vs_pe_put(cp->pe); ip_vs_pe_put(cp->pe); kfree(cp->pe_data); kfree(cp->pe_data); Loading
net/netfilter/ipvs/ip_vs_core.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1945,6 +1945,7 @@ static void __net_exit __ip_vs_dev_cleanup(struct net *net) { { EnterFunction(2); EnterFunction(2); net_ipvs(net)->enable = 0; /* Disable packet reception */ net_ipvs(net)->enable = 0; /* Disable packet reception */ smp_wmb(); __ip_vs_sync_cleanup(net); __ip_vs_sync_cleanup(net); LeaveFunction(2); LeaveFunction(2); } } Loading