if (driver->ops.start) { result = driver->ops.start(device); if (result && driver->ops.remove) driver->ops.remove(device, ACPI_BUS_REMOVAL_NORMAL); return_VALUE(result); }  
acpi_bus_driver_init (	struct acpi_device	*device, 	struct acpi_driver	*driver){	int			result = 0;	ACPI_FUNCTION_TRACE("acpi_bus_driver_init");	if (!device || !driver)		return_VALUE(-EINVAL);	if (!driver->ops.add)		return_VALUE(-ENOSYS);	result = driver->ops.add(device);	if (result) {		device->driver = NULL;		acpi_driver_data(device) = NULL;		return_VALUE(result);	}	device->driver = driver;	/*	 * TBD - Configuration Management: Assign resources to device based	 * upon possible configuration and currently allocated resources.	 */	if (driver->ops.start) {		result = driver->ops.start(device);		if (result && driver->ops.remove)			driver->ops.remove(device, ACPI_BUS_REMOVAL_NORMAL);		return_VALUE(result);	}	ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Driver successfully bound to device\n"));	if (driver->ops.scan) {		driver->ops.scan(device);	}	return_VALUE(0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3fb02738b0fd36f47710a2bf207129efd2f5daa2/scan.c/buggy/drivers/acpi/scan.c