if ((error = swsusp_swap_check())) { printk(KERN_ERR "swsusp: cannot find swap device, try swapon -a.\n"); device_power_up(); local_irq_enable(); return error; 
if ((error = save_highmem())) { printk(KERN_ERR "swsusp: Not enough free pages for highmem\n"); goto Restore_highmem; 
int swsusp_suspend(void){	int error;	if ((error = arch_prepare_suspend()))		return error;	local_irq_disable();	/* At this point, device_suspend() has been called, but *not*	 * device_power_down(). We *must* device_power_down() now.	 * Otherwise, drivers for some devices (e.g. interrupt controllers)	 * become desynchronized with the actual state of the hardware	 * at resume time, and evil weirdness ensues.	 */	if ((error = device_power_down(PMSG_FREEZE))) {		printk(KERN_ERR "Some devices failed to power down, aborting suspend\n");		local_irq_enable();		return error;	}	if ((error = swsusp_swap_check())) {		printk(KERN_ERR "swsusp: cannot find swap device, try swapon -a.\n");		device_power_up();		local_irq_enable();		return error;	}	save_processor_state();	if ((error = swsusp_arch_suspend()))		printk(KERN_ERR "Error %d suspending\n", error);	/* Restore control flow magically appears here */	restore_processor_state();	restore_highmem();	device_power_up();	local_irq_enable();	return error;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0fbeb5a45dccd493c35a68a5548e6a9d9882a791/swsusp.c/buggy/kernel/power/swsusp.c