if (error) free_pagedir(pblist); else 
if (!error) 
static int read_pagedir(struct pbe *pblist){	struct pbe *pbpage, *p;	unsigned i = 0;	int error;	if (!pblist)		return -EFAULT;	printk("swsusp: Reading pagedir (%lu pages)\n",			swsusp_info.pagedir_pages);	for_each_pb_page (pbpage, pblist) {		unsigned long offset = swp_offset(swsusp_info.pagedir[i++]);		error = -EFAULT;		if (offset) {			p = (pbpage + PB_PAGE_SKIP)->next;			error = bio_read_page(offset, (void *)pbpage);			(pbpage + PB_PAGE_SKIP)->next = p;		}		if (error)			break;	}	if (error)		free_pagedir(pblist);	else		BUG_ON(i != swsusp_info.pagedir_pages);	return error;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2c1b4a5ca48831595979a850f40ced8e7da026f8/swsusp.c/buggy/kernel/power/swsusp.c