if(sys_tbl) kfree(sys_tbl); 
kfree(sys_tbl); 
static int adpt_i2o_build_sys_table(void){	adpt_hba* pHba = NULL;	int count = 0;	sys_tbl_len = sizeof(struct i2o_sys_tbl) +	// Header + IOPs				(hba_count) * sizeof(struct i2o_sys_tbl_entry);	if(sys_tbl)		kfree(sys_tbl);	sys_tbl = kmalloc(sys_tbl_len, GFP_KERNEL|ADDR32);	if(!sys_tbl) {		printk(KERN_WARNING "SysTab Set failed. Out of memory.\n");			return -ENOMEM;	}	memset(sys_tbl, 0, sys_tbl_len);	sys_tbl->num_entries = hba_count;	sys_tbl->version = I2OVERSION;	sys_tbl->change_ind = sys_tbl_ind++;	for(pHba = hba_chain; pHba; pHba = pHba->next) {		// Get updated Status Block so we have the latest information		if (adpt_i2o_status_get(pHba)) {			sys_tbl->num_entries--;			continue; // try next one			}		sys_tbl->iops[count].org_id = pHba->status_block->org_id;		sys_tbl->iops[count].iop_id = pHba->unit + 2;		sys_tbl->iops[count].seg_num = 0;		sys_tbl->iops[count].i2o_version = pHba->status_block->i2o_version;		sys_tbl->iops[count].iop_state = pHba->status_block->iop_state;		sys_tbl->iops[count].msg_type = pHba->status_block->msg_type;		sys_tbl->iops[count].frame_size = pHba->status_block->inbound_frame_size;		sys_tbl->iops[count].last_changed = sys_tbl_ind - 1; // ??		sys_tbl->iops[count].iop_capabilities = pHba->status_block->iop_capabilities;		sys_tbl->iops[count].inbound_low = (u32)virt_to_bus(pHba->post_port);		sys_tbl->iops[count].inbound_high = (u32)((u64)virt_to_bus(pHba->post_port)>>32);		count++;	}#ifdef DEBUG{	u32 *table = (u32*)sys_tbl;	printk(KERN_DEBUG"sys_tbl_len=%d in 32bit words\n",(sys_tbl_len >>2));	for(count = 0; count < (sys_tbl_len >>2); count++) {		printk(KERN_INFO "sys_tbl[%d] = %0#10x\n", 			count, table[count]);	}}#endif	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/c9475cb0c358ff0dd473544280d92482df491913/dpt_i2o.c/buggy/drivers/scsi/dpt_i2o.c