Messages in this thread | | | Date | Tue, 15 Dec 2009 13:03:50 +0900 | From | Tejun Heo <> | Subject | Re: [this_cpu_xx V7 7/8] Module handling: Use this_cpu_xx to dynamically allocate counters |
| |
(Rusty Russell cc'd.)
On 12/15/2009 07:03 AM, Christoph Lameter wrote: > @@ -479,15 +467,15 @@ static inline int try_module_get(struct > int ret = 1; > > if (module) { > - unsigned int cpu = get_cpu(); > if (likely(module_is_live(module))) { > - local_inc(__module_ref_addr(module, cpu)); > + preempt_disable(); > + __this_cpu_inc(module->refptr->count); > trace_module_get(module, _THIS_IP_, > - local_read(__module_ref_addr(module, cpu))); > + __this_cpu_read(module->refptr->count)); > + preempt_enable(); > } > else > ret = 0; > - put_cpu();
I think you need preemption disabled while checking whether module_is_live(). The state is protected by stop_machine or synchronize_sched().
Thanks.
-- tejun
| |