]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv4/ipvs/ip_vs_ctl.c
ipvs: No need to zero out ip_vs_stats during initialization
[net-next-2.6.git] / net / ipv4 / ipvs / ip_vs_ctl.c
index 9a5ace0b4dd626f20d5cf4f72d8c08c50e69dcf5..cfb1d20993d1d412042a61501d73b57c27f3d8af 100644 (file)
@@ -684,8 +684,8 @@ ip_vs_zero_stats(struct ip_vs_stats *stats)
 {
        spin_lock_bh(&stats->lock);
        memset(stats, 0, (char *)&stats->lock - (char *)stats);
-       spin_unlock_bh(&stats->lock);
        ip_vs_zero_estimator(stats);
+       spin_unlock_bh(&stats->lock);
 }
 
 /*
@@ -1589,7 +1589,7 @@ static struct ctl_table vs_vars[] = {
        { .ctl_name = 0 }
 };
 
-struct ctl_path net_vs_ctl_path[] = {
+const struct ctl_path net_vs_ctl_path[] = {
        { .procname = "net", .ctl_name = CTL_NET, },
        { .procname = "ipv4", .ctl_name = NET_IPV4, },
        { .procname = "vs", },
@@ -1784,7 +1784,9 @@ static const struct file_operations ip_vs_info_fops = {
 
 #endif
 
-struct ip_vs_stats ip_vs_stats;
+struct ip_vs_stats ip_vs_stats = {
+       .lock = __SPIN_LOCK_UNLOCKED(ip_vs_stats.lock),
+};
 
 #ifdef CONFIG_PROC_FS
 static int ip_vs_stats_show(struct seq_file *seq, void *v)
@@ -2306,7 +2308,7 @@ static struct nf_sockopt_ops ip_vs_sockopts = {
 };
 
 
-int ip_vs_control_init(void)
+int __init ip_vs_control_init(void)
 {
        int ret;
        int idx;
@@ -2333,8 +2335,6 @@ int ip_vs_control_init(void)
                INIT_LIST_HEAD(&ip_vs_rtable[idx]);
        }
 
-       memset(&ip_vs_stats, 0, sizeof(ip_vs_stats));
-       spin_lock_init(&ip_vs_stats.lock);
        ip_vs_new_estimator(&ip_vs_stats);
 
        /* Hook the defense timer */