static int start_kcs_transaction(struct si_sm_data *kcs, unsigned char *data,				 unsigned int size){	if ((size < 2) || (size > MAX_KCS_WRITE_SIZE)) {		return -1;	}	if ((kcs->state != KCS_IDLE) && (kcs->state != KCS_HOSED)) {		return -2;	}	kcs->error_retries = 0;	memcpy(kcs->write_data, data, size);	kcs->write_count = size;	kcs->orig_write_count = size;	kcs->write_pos = 0;	kcs->read_pos = 0;	kcs->state = KCS_START_OP;	kcs->ibf_timeout = IBF_RETRY_TIMEOUT;	kcs->obf_timeout = OBF_RETRY_TIMEOUT;	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c4edff1c19ef23e15aae64ca03f32c6719822d54/ipmi_kcs_sm.c/buggy/drivers/char/ipmi/ipmi_kcs_sm.c