if (rgn_desc->region.length < (obj_desc->common_field.base_byte_offset + field_datum_byte_offset + obj_desc->common_field.access_byte_width)) { 
if (rgn_desc->region.length < (obj_desc->common_field.base_byte_offset + field_datum_byte_offset + obj_desc->common_field.access_byte_width)) { 
acpi_ex_setup_region (	union acpi_operand_object       *obj_desc,	u32                             field_datum_byte_offset){	acpi_status                     status = AE_OK;	union acpi_operand_object       *rgn_desc;	ACPI_FUNCTION_TRACE_U32 ("ex_setup_region", field_datum_byte_offset);	rgn_desc = obj_desc->common_field.region_obj;	/* We must have a valid region */	if (ACPI_GET_OBJECT_TYPE (rgn_desc) != ACPI_TYPE_REGION) {		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n",			ACPI_GET_OBJECT_TYPE (rgn_desc),			acpi_ut_get_object_type_name (rgn_desc)));		return_ACPI_STATUS (AE_AML_OPERAND_TYPE);	}	/*	 * If the Region Address and Length have not been previously evaluated,	 * evaluate them now and save the results.	 */	if (!(rgn_desc->common.flags & AOPOBJ_DATA_VALID)) {		status = acpi_ds_get_region_arguments (rgn_desc);		if (ACPI_FAILURE (status)) {			return_ACPI_STATUS (status);		}	}	if (rgn_desc->region.space_id == ACPI_ADR_SPACE_SMBUS) {		/* SMBus has a non-linear address space */		return_ACPI_STATUS (AE_OK);	}#ifdef ACPI_UNDER_DEVELOPMENT	/*	 * If the Field access is any_acc, we can now compute the optimal	 * access (because we know know the length of the parent region)	 */	if (!(obj_desc->common.flags & AOPOBJ_DATA_VALID)) {		if (ACPI_FAILURE (status)) {			return_ACPI_STATUS (status);		}	}#endif	/*	 * Validate the request.  The entire request from the byte offset for a	 * length of one field datum (access width) must fit within the region.	 * (Region length is specified in bytes)	 */	if (rgn_desc->region.length < (obj_desc->common_field.base_byte_offset			   + field_datum_byte_offset			   + obj_desc->common_field.access_byte_width)) {		if (acpi_gbl_enable_interpreter_slack) {			/*			 * Slack mode only:  We will go ahead and allow access to this			 * field if it is within the region length rounded up to the next			 * access width boundary.			 */			if (ACPI_ROUND_UP (rgn_desc->region.length,					   obj_desc->common_field.access_byte_width) >=				(obj_desc->common_field.base_byte_offset +				 (acpi_native_uint) obj_desc->common_field.access_byte_width +				 field_datum_byte_offset)) {				return_ACPI_STATUS (AE_OK);			}		}		if (rgn_desc->region.length < obj_desc->common_field.access_byte_width) {			/*			 * This is the case where the access_type (acc_word, etc.) is wider			 * than the region itself.  For example, a region of length one			 * byte, and a field with Dword access specified.			 */			ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,				"Field [%4.4s] access width (%d bytes) too large for region [%4.4s] (length %X)\n",				acpi_ut_get_node_name (obj_desc->common_field.node),				obj_desc->common_field.access_byte_width,				acpi_ut_get_node_name (rgn_desc->region.node), rgn_desc->region.length));		}		/*		 * Offset rounded up to next multiple of field width		 * exceeds region length, indicate an error		 */		ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,			"Field [%4.4s] Base+Offset+Width %X+%X+%X is beyond end of region [%4.4s] (length %X)\n",			acpi_ut_get_node_name (obj_desc->common_field.node),			obj_desc->common_field.base_byte_offset,			field_datum_byte_offset, obj_desc->common_field.access_byte_width,			acpi_ut_get_node_name (rgn_desc->region.node), rgn_desc->region.length));		return_ACPI_STATUS (AE_AML_REGION_LIMIT);	}	return_ACPI_STATUS (AE_OK);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/44f6c01242da4e162f28d8e1216a8c7a91174605/exfldio.c/buggy/drivers/acpi/executer/exfldio.c