static int create_packet(size_t length) 
static int create_packet(void *data, size_t length) 
static int create_packet(size_t length){	struct packet_data *newpacket;	int ordernum = 0;	pr_debug("create_packet: entry \n");	if (!rbu_data.packetsize) {		pr_debug("create_packet: packetsize not specified\n");		return -EINVAL;	}	spin_unlock(&rbu_data.lock);	newpacket = kmalloc(sizeof (struct packet_data), GFP_KERNEL);	spin_lock(&rbu_data.lock);	if (!newpacket) {		printk(KERN_WARNING			"dell_rbu:%s: failed to allocate new "			"packet\n", __FUNCTION__);		return -ENOMEM;	}	ordernum = get_order(length);	/*	 * there is no upper limit on memory	 * address for packetized mechanism	 */	spin_unlock(&rbu_data.lock);	newpacket->data = (unsigned char *) __get_free_pages(GFP_KERNEL,		ordernum);	spin_lock(&rbu_data.lock);	pr_debug("create_packet: newpacket %p\n", newpacket->data);	if (!newpacket->data) {		printk(KERN_WARNING			"dell_rbu:%s: failed to allocate new "			"packet\n", __FUNCTION__);		kfree(newpacket);		return -ENOMEM;	}	newpacket->ordernum = ordernum;	++rbu_data.num_packets;	/*	 * initialize the newly created packet headers	 */	INIT_LIST_HEAD(&newpacket->list);	list_add_tail(&newpacket->list, &packet_data_head.list);	/*	 * packets have fixed size	 */	newpacket->length = rbu_data.packetsize;	pr_debug("create_packet: exit \n");	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/ad6ce87e5bd4440a6ce9aa9f8cda795b9e902eff/dell_rbu.c/buggy/drivers/firmware/dell_rbu.c