img_update_realloc(unsigned long size) 
static int img_update_realloc(unsigned long size) 
img_update_realloc(unsigned long size){	unsigned char *image_update_buffer = NULL;	unsigned long rc;	unsigned long img_buf_phys_addr;	int ordernum;	int dma_alloc = 0;	/*	 * check if the buffer of sufficient size has been	 * already allocated	 */	if (rbu_data.image_update_buffer_size >= size) {		/*		 * check for corruption		 */		if ((size != 0) && (rbu_data.image_update_buffer == NULL)) {			printk(KERN_ERR "dell_rbu:%s: corruption "				"check failed\n", __FUNCTION__);			return -EINVAL;		}		/*		 * we have a valid pre-allocated buffer with		 * sufficient size		 */		return 0;	}	/*	 * free any previously allocated buffer	 */	img_update_free();	spin_unlock(&rbu_data.lock);	ordernum = get_order(size);	image_update_buffer =		(unsigned char *) __get_free_pages(GFP_KERNEL, ordernum);	img_buf_phys_addr =		(unsigned long) virt_to_phys(image_update_buffer);	if (img_buf_phys_addr > BIOS_SCAN_LIMIT) {		free_pages((unsigned long) image_update_buffer, ordernum);		ordernum = -1;		image_update_buffer = dma_alloc_coherent(NULL, size,			&dell_rbu_dmaaddr, GFP_KERNEL);		dma_alloc = 1;	}	spin_lock(&rbu_data.lock);	if (image_update_buffer != NULL) {		rbu_data.image_update_buffer = image_update_buffer;		rbu_data.image_update_buffer_size = size;		rbu_data.bios_image_size =			rbu_data.image_update_buffer_size;		rbu_data.image_update_ordernum = ordernum;		rbu_data.dma_alloc = dma_alloc;		rc = 0;	} else {		pr_debug("Not enough memory for image update:"			"size = %ld\n", size);		rc = -ENOMEM;	}	return rc;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/dda8577fb5a00507e5aea737833190a10516b257/dell_rbu.c/buggy/drivers/firmware/dell_rbu.c