diff options
| -rw-r--r-- | drivers/acpi/internal.h | 2 | ||||
| -rw-r--r-- | drivers/acpi/power.c | 2 | ||||
| -rw-r--r-- | drivers/acpi/scan.c | 21 | 
3 files changed, 11 insertions, 14 deletions
| diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index 53947e3e41ee..b852cff80287 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h @@ -109,7 +109,7 @@ struct acpi_device_bus_id {  int acpi_device_add(struct acpi_device *device,  		    void (*release)(struct device *));  void acpi_init_device_object(struct acpi_device *device, acpi_handle handle, -			     int type, struct acpi_device_info *info); +			     int type);  int acpi_device_setup_files(struct acpi_device *dev);  void acpi_device_remove_files(struct acpi_device *dev);  void acpi_device_add_finalize(struct acpi_device *device); diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c index 664e2e94ce61..b68a6e33ac34 100644 --- a/drivers/acpi/power.c +++ b/drivers/acpi/power.c @@ -925,7 +925,7 @@ int acpi_add_power_resource(acpi_handle handle)  		return -ENOMEM;  	device = &resource->device; -	acpi_init_device_object(device, handle, ACPI_BUS_TYPE_POWER, NULL); +	acpi_init_device_object(device, handle, ACPI_BUS_TYPE_POWER);  	mutex_init(&resource->resource_lock);  	INIT_LIST_HEAD(&resource->list_node);  	INIT_LIST_HEAD(&resource->dependents); diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 902cecb218d3..053777845475 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -1307,8 +1307,9 @@ static bool acpi_object_is_system_bus(acpi_handle handle)  }  static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp, -				int device_type, struct acpi_device_info *info) +			     int device_type)  { +	struct acpi_device_info *info = NULL;  	struct acpi_pnp_device_id_list *cid_list;  	int i; @@ -1319,6 +1320,7 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,  			break;  		} +		acpi_get_object_info(handle, &info);  		if (!info) {  			pr_err(PREFIX "%s: Error reading device info\n",  					__func__); @@ -1344,6 +1346,8 @@ static void acpi_set_pnp_ids(acpi_handle handle, struct acpi_device_pnp *pnp,  		if (info->valid & ACPI_VALID_CLS)  			acpi_add_id(pnp, info->class_code.string); +		kfree(info); +  		/*  		 * Some devices don't reliably have _HIDs & _CIDs, so add  		 * synthetic HIDs to make sure drivers can find them. @@ -1649,7 +1653,7 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device)  }  void acpi_init_device_object(struct acpi_device *device, acpi_handle handle, -			     int type, struct acpi_device_info *info) +			     int type)  {  	INIT_LIST_HEAD(&device->pnp.ids);  	device->device_type = type; @@ -1658,7 +1662,7 @@ void acpi_init_device_object(struct acpi_device *device, acpi_handle handle,  	fwnode_init(&device->fwnode, &acpi_device_fwnode_ops);  	acpi_set_device_status(device, ACPI_STA_DEFAULT);  	acpi_device_get_busid(device); -	acpi_set_pnp_ids(handle, &device->pnp, type, info); +	acpi_set_pnp_ids(handle, &device->pnp, type);  	acpi_init_properties(device);  	acpi_bus_get_flags(device);  	device->flags.match_driver = false; @@ -1688,21 +1692,14 @@ static void acpi_scan_init_status(struct acpi_device *adev)  static int acpi_add_single_object(struct acpi_device **child,  				  acpi_handle handle, int type)  { -	struct acpi_device_info *info = NULL;  	struct acpi_device *device;  	int result; -	if (type == ACPI_BUS_TYPE_DEVICE && handle != ACPI_ROOT_OBJECT) -		acpi_get_object_info(handle, &info); -  	device = kzalloc(sizeof(struct acpi_device), GFP_KERNEL); -	if (!device) { -		kfree(info); +	if (!device)  		return -ENOMEM; -	} -	acpi_init_device_object(device, handle, type, info); -	kfree(info); +	acpi_init_device_object(device, handle, type);  	/*  	 * Getting the status is delayed till here so that we can call  	 * acpi_bus_get_status() and use its quirk handling.  Note that | 
