Looking at schedule_work() below: fs/file.c: fddef = &get_cpu_var(fdtable_defer_list); spin_lock(&fddef->lock); fdt->next = fddef->next; fddef->next = fdt; /* vmallocs are handled from the workqueue context */ schedule_work(&fddef->wq);===> spin_unlock(&fddef->lock); can schedule_work() sleep? if so, then holding a spin_lock (which is supposed to be used for quick turnaround operation) across a sleepable functions look risky here (though it is possible to design this way, but the classic CPU 100% bug is possible - sleep and never wake up, resulting in another CPU going into spin_lock mode - churning up 100% CPU time). Or may be I am wrong? Can calling this function schedule_work() ever ended the entire task being reassigned to another CPU? If so, then, will it not defeats the purpose of using the per_cpu function get_cpu_var()? How about schedule() -->ever ended the entire task being reassigned to another CPU? ? -- Regards, Peter Teoh -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ