if (us3_freq_table) { kfree(us3_freq_table); us3_freq_table = NULL; } 
kfree(us3_freq_table); us3_freq_table = NULL; 
static int __init us3_freq_init(void){	unsigned long manuf, impl, ver;	int ret;	__asm__("rdpr %%ver, %0" : "=r" (ver));	manuf = ((ver >> 48) & 0xffff);	impl  = ((ver >> 32) & 0xffff);	if (manuf == CHEETAH_MANUF &&	    (impl == CHEETAH_IMPL ||	     impl == CHEETAH_PLUS_IMPL ||	     impl == JAGUAR_IMPL ||	     impl == PANTHER_IMPL)) {		struct cpufreq_driver *driver;		ret = -ENOMEM;		driver = kmalloc(sizeof(struct cpufreq_driver), GFP_KERNEL);		if (!driver)			goto err_out;		memset(driver, 0, sizeof(*driver));		us3_freq_table = kmalloc(			(NR_CPUS * sizeof(struct us3_freq_percpu_info)),			GFP_KERNEL);		if (!us3_freq_table)			goto err_out;		memset(us3_freq_table, 0,		       (NR_CPUS * sizeof(struct us3_freq_percpu_info)));		driver->init = us3_freq_cpu_init;		driver->verify = us3_freq_verify;		driver->target = us3_freq_target;		driver->get = us3_freq_get;		driver->exit = us3_freq_cpu_exit;		driver->owner = THIS_MODULE,		strcpy(driver->name, "UltraSPARC-III");		cpufreq_us3_driver = driver;		ret = cpufreq_register_driver(driver);		if (ret)			goto err_out;		return 0;err_out:		if (driver) {			kfree(driver);			cpufreq_us3_driver = NULL;		}		if (us3_freq_table) {			kfree(us3_freq_table);			us3_freq_table = NULL;		}		return ret;	}	return -ENODEV;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b2325fe1b7e5654fac9e9419423aa2c58a3dbd83/us3_cpufreq.c/clean/arch/sparc64/kernel/us3_cpufreq.c