aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
Diffstat (limited to 'net/core')
-rw-r--r--net/core/flow.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/net/core/flow.c b/net/core/flow.c
index dfa602ceb8cd..9a2151f5d593 100644
--- a/net/core/flow.c
+++ b/net/core/flow.c
@@ -456,6 +456,8 @@ static int __init flow_cache_init(struct flow_cache *fc)
456 if (!fc->percpu) 456 if (!fc->percpu)
457 return -ENOMEM; 457 return -ENOMEM;
458 458
459 cpu_notifier_register_begin();
460
459 for_each_online_cpu(i) { 461 for_each_online_cpu(i) {
460 if (flow_cache_cpu_prepare(fc, i)) 462 if (flow_cache_cpu_prepare(fc, i))
461 goto err; 463 goto err;
@@ -463,7 +465,9 @@ static int __init flow_cache_init(struct flow_cache *fc)
463 fc->hotcpu_notifier = (struct notifier_block){ 465 fc->hotcpu_notifier = (struct notifier_block){
464 .notifier_call = flow_cache_cpu, 466 .notifier_call = flow_cache_cpu,
465 }; 467 };
466 register_hotcpu_notifier(&fc->hotcpu_notifier); 468 __register_hotcpu_notifier(&fc->hotcpu_notifier);
469
470 cpu_notifier_register_done();
467 471
468 setup_timer(&fc->rnd_timer, flow_cache_new_hashrnd, 472 setup_timer(&fc->rnd_timer, flow_cache_new_hashrnd,
469 (unsigned long) fc); 473 (unsigned long) fc);
@@ -479,6 +483,8 @@ err:
479 fcp->hash_table = NULL; 483 fcp->hash_table = NULL;
480 } 484 }
481 485
486 cpu_notifier_register_done();
487
482 free_percpu(fc->percpu); 488 free_percpu(fc->percpu);
483 fc->percpu = NULL; 489 fc->percpu = NULL;
484 490