ACPI: acpi_bus_{scan,bus,add}: return -ENODEV if no device was found
Callers (acpi_memhotplug.c, dock.c and others) check for the return value of acpi_bus_add() and assume a valid device was returned in case zero was returned. Thus return -ENODEV if no device was found in acpi_bus_scan and propagate this through acpi_bus_add and acpi_bus_start. Also remove a confusing comment in acpiphp_glue.c, acpi_bus_scan will and cannot invoke if acpi_bus_add returns no valid device. Signed-off-by: Thomas Renninger <trenn@suse.de> Acked-by: Bjorn Helgaas <bjorn.helgaas@hp.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
		
							parent
							
								
									d2f6650a95
								
							
						
					
					
						commit
						7779688fc3
					
				| @ -1336,9 +1336,25 @@ static int acpi_bus_scan(acpi_handle handle, struct acpi_bus_ops *ops, | ||||
| 
 | ||||
| 	if (child) | ||||
| 		*child = device; | ||||
| 	return 0; | ||||
| 
 | ||||
| 	if (device) | ||||
| 		return 0; | ||||
| 	else | ||||
| 		return -ENODEV; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  * acpi_bus_add and acpi_bus_start | ||||
|  * | ||||
|  * scan a given ACPI tree and (probably recently hot-plugged) | ||||
|  * create and add or starts found devices. | ||||
|  * | ||||
|  * If no devices were found -ENODEV is returned which does not | ||||
|  * mean that this is a real error, there just have been no suitable | ||||
|  * ACPI objects in the table trunk from which the kernel could create | ||||
|  * a device and add/start an appropriate driver. | ||||
|  */ | ||||
| 
 | ||||
| int | ||||
| acpi_bus_add(struct acpi_device **child, | ||||
| 	     struct acpi_device *parent, acpi_handle handle, int type) | ||||
| @ -1348,8 +1364,7 @@ acpi_bus_add(struct acpi_device **child, | ||||
| 	memset(&ops, 0, sizeof(ops)); | ||||
| 	ops.acpi_op_add = 1; | ||||
| 
 | ||||
| 	acpi_bus_scan(handle, &ops, child); | ||||
| 	return 0; | ||||
| 	return acpi_bus_scan(handle, &ops, child); | ||||
| } | ||||
| EXPORT_SYMBOL(acpi_bus_add); | ||||
| 
 | ||||
| @ -1363,8 +1378,7 @@ int acpi_bus_start(struct acpi_device *device) | ||||
| 	memset(&ops, 0, sizeof(ops)); | ||||
| 	ops.acpi_op_start = 1; | ||||
| 
 | ||||
| 	acpi_bus_scan(device->handle, &ops, NULL); | ||||
| 	return 0; | ||||
| 	return acpi_bus_scan(device->handle, &ops, NULL); | ||||
| } | ||||
| EXPORT_SYMBOL(acpi_bus_start); | ||||
| 
 | ||||
|  | ||||
| @ -720,12 +720,6 @@ static int acpiphp_bus_add(struct acpiphp_func *func) | ||||
| 			-ret_val); | ||||
| 		goto acpiphp_bus_add_out; | ||||
| 	} | ||||
| 	/*
 | ||||
| 	 * try to start anyway.  We could have failed to add | ||||
| 	 * simply because this bus had previously been added | ||||
| 	 * on another add.  Don't bother with the return value | ||||
| 	 * we just keep going. | ||||
| 	 */ | ||||
| 	ret_val = acpi_bus_start(device); | ||||
| 
 | ||||
| acpiphp_bus_add_out: | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user