--- include/linux/cpu.h | 9 +++++++++ net/core/flow.c | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff -puN net/core/flow.c~flow-cpucontrol-fix net/core/flow.c --- 25/net/core/flow.c~flow-cpucontrol-fix 2004-01-22 19:52:46.000000000 -0800 +++ 25-akpm/net/core/flow.c 2004-01-22 19:52:46.000000000 -0800 @@ -286,7 +286,7 @@ void flow_cache_flush(void) /* Don't want cpus going down or up during this, also protects * against multiple callers. */ - down(&cpucontrol); + down_cpucontrol(); atomic_set(&info.cpuleft, num_online_cpus()); init_completion(&info.completion); @@ -296,7 +296,7 @@ void flow_cache_flush(void) local_bh_enable(); wait_for_completion(&info.completion); - up(&cpucontrol); + up_cpucontrol(); } static void __devinit flow_cache_cpu_prepare(int cpu) diff -puN include/linux/cpu.h~flow-cpucontrol-fix include/linux/cpu.h --- 25/include/linux/cpu.h~flow-cpucontrol-fix 2004-01-22 19:52:46.000000000 -0800 +++ 25-akpm/include/linux/cpu.h 2004-01-22 19:52:46.000000000 -0800 @@ -37,7 +37,12 @@ extern int register_cpu_notifier(struct extern void unregister_cpu_notifier(struct notifier_block *nb); int cpu_up(unsigned int cpu); + +#define down_cpucontrol() down(&cpucontrol) +#define up_cpucontrol() up(&cpucontrol) + #else + static inline int register_cpu_notifier(struct notifier_block *nb) { return 0; @@ -45,6 +50,10 @@ static inline int register_cpu_notifier( static inline void unregister_cpu_notifier(struct notifier_block *nb) { } + +#define down_cpucontrol() do { } while (0) +#define up_cpucontrol() do { } while (0) + #endif /* CONFIG_SMP */ extern struct sysdev_class cpu_sysdev_class; _