lock_cpu_hotplug(); 
 /* * Converted the lock_cpu_hotplug to preempt_disable() * and preempt_enable(). This is a bit kludgy and relies on how cpu * hotplug works. All we need is a guarantee that cpu hotplug won't make * progress on any cpu. Once we do preempt_disable(), this would ensure * that hotplug threads don't get onto this cpu, thereby delaying * the cpu remove process. * * We removed the lock_cpu_hotplug since we need to call this function * via cpu hotplug callbacks, which result in locking the cpu hotplug * thread itself. Agree this is not very clean, cpufreq community * could improve this if required. - Ashok Raj <ashok.raj@intel.com> */ preempt_disable(); 
int __cpufreq_driver_target(struct cpufreq_policy *policy,			    unsigned int target_freq,			    unsigned int relation){	int retval = -EINVAL;	lock_cpu_hotplug();	dprintk("target for CPU %u: %u kHz, relation %u\n", policy->cpu,		target_freq, relation);	if (cpu_online(policy->cpu) && cpufreq_driver->target)		retval = cpufreq_driver->target(policy, target_freq, relation);	unlock_cpu_hotplug();	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c32b6b8e524d2c337767d312814484d9289550cf/cpufreq.c/buggy/drivers/cpufreq/cpufreq.c