mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-26 15:45:14 +08:00
ACPI fixes for 5.16-rc3
- Fix NULL pointer dereference in the CPPC library code occuring on hybrid systems without CPPC support (Rafael Wysocki). - Avoid attempts to acquire a semaphore with interrupts off when printing the names of ACPI device nodes and clean up code on top of that fix (Sakari Ailus). -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAmGhMxoSHHJqd0Byand5 c29ja2kubmV0AAoJEILEb/54YlRxSUUP/RXsaC+O7KIMZTZm962GLZl8Wcb7LxdK oJhcw4OnH5R53Pl1TJrU3iPTnM5CAwEwX0biIVQyqgpfx94Qdu0oJCFuXaMB1FiB hY3Q5wIa+olFyc1KDPrdVCga4RVlaJBvQnuV3H30eoziSirt7d8dIlmjtGscOU3l JSgVVIc6CHPnf7qpZ1EFfdi5xGBSfOpUSwVPkj1r5AZkDNXUk5kPu3MNT36F0weZ zjz6Q7BWVjca4Ih6eB6H2IOjkizCXpnGYeZwZQqV+h4920AkCJhOHxOmx/Gwqs1J bVAOg4s+DvnObh6D7JMsKm8VhT4FFcYwIVEDXl8z5oXXrINbCHj0WKBiKfKhdrRt BPXJ2q+LbqCRKCVKB082nEkVB2KpM0QlHUdFUVTIXnsKDyYwPAXHO/fXAa8qjTGT X73bnGuYQJ/Xob8mnj7/UJ2SSEgqwZRByJ9YZGdTbDk4B2yrSeylQha2Dr3p75fM pcKC/jOzbV2yOsp1GH5mjexyytsmF68gvPFk/S4VYQYEHpC3zEm8UrV2yaj01yOL a51aOFwhwuJ3LxsNpoX3qBEL6TKYg6ueqmunQ9Mffgjx/1gu/afQqs2KVX9duKD/ UpxW2qeVV6OnViyLQ0n5lgBEFZ1jIXlSm0wEsH4gJNaxgdZHa7ZNZnGPL1Ay9Op9 apFI9Gdk8X1e =yXqv -----END PGP SIGNATURE----- Merge tag 'acpi-5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm Pull ACPI fixes from Rafael Wysocki: "These fix a NULL pointer dereference in the CPPC library code and a locking issue related to printing the names of ACPI device nodes in the device properties framework. Specifics: - Fix NULL pointer dereference in the CPPC library code occuring on hybrid systems without CPPC support (Rafael Wysocki). - Avoid attempts to acquire a semaphore with interrupts off when printing the names of ACPI device nodes and clean up code on top of that fix (Sakari Ailus)" * tag 'acpi-5.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI: CPPC: Add NULL pointer check to cppc_get_perf() ACPI: Make acpi_node_get_parent() local ACPI: Get acpi_device's parent from the parent field
This commit is contained in:
commit
5367cf1c3a
@ -998,7 +998,14 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)
|
||||
static int cppc_get_perf(int cpunum, enum cppc_regs reg_idx, u64 *perf)
|
||||
{
|
||||
struct cpc_desc *cpc_desc = per_cpu(cpc_desc_ptr, cpunum);
|
||||
struct cpc_register_resource *reg = &cpc_desc->cpc_regs[reg_idx];
|
||||
struct cpc_register_resource *reg;
|
||||
|
||||
if (!cpc_desc) {
|
||||
pr_debug("No CPC descriptor for CPU:%d\n", cpunum);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
reg = &cpc_desc->cpc_regs[reg_idx];
|
||||
|
||||
if (CPC_IN_PCC(reg)) {
|
||||
int pcc_ss_id = per_cpu(cpu_pcc_subspace_idx, cpunum);
|
||||
|
@ -1084,21 +1084,17 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
|
||||
* Returns parent node of an ACPI device or data firmware node or %NULL if
|
||||
* not available.
|
||||
*/
|
||||
struct fwnode_handle *acpi_node_get_parent(const struct fwnode_handle *fwnode)
|
||||
static struct fwnode_handle *
|
||||
acpi_node_get_parent(const struct fwnode_handle *fwnode)
|
||||
{
|
||||
if (is_acpi_data_node(fwnode)) {
|
||||
/* All data nodes have parent pointer so just return that */
|
||||
return to_acpi_data_node(fwnode)->parent;
|
||||
} else if (is_acpi_device_node(fwnode)) {
|
||||
acpi_handle handle, parent_handle;
|
||||
struct device *dev = to_acpi_device_node(fwnode)->dev.parent;
|
||||
|
||||
handle = to_acpi_device_node(fwnode)->handle;
|
||||
if (ACPI_SUCCESS(acpi_get_parent(handle, &parent_handle))) {
|
||||
struct acpi_device *adev;
|
||||
|
||||
if (!acpi_bus_get_device(parent_handle, &adev))
|
||||
return acpi_fwnode_handle(adev);
|
||||
}
|
||||
if (dev)
|
||||
return acpi_fwnode_handle(to_acpi_device(dev));
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
@ -1182,7 +1182,6 @@ int acpi_node_prop_get(const struct fwnode_handle *fwnode, const char *propname,
|
||||
|
||||
struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,
|
||||
struct fwnode_handle *child);
|
||||
struct fwnode_handle *acpi_node_get_parent(const struct fwnode_handle *fwnode);
|
||||
|
||||
struct acpi_probe_entry;
|
||||
typedef bool (*acpi_probe_entry_validate_subtbl)(struct acpi_subtable_header *,
|
||||
@ -1287,12 +1286,6 @@ acpi_get_next_subnode(const struct fwnode_handle *fwnode,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct fwnode_handle *
|
||||
acpi_node_get_parent(const struct fwnode_handle *fwnode)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct fwnode_handle *
|
||||
acpi_graph_get_next_endpoint(const struct fwnode_handle *fwnode,
|
||||
struct fwnode_handle *prev)
|
||||
|
Loading…
Reference in New Issue
Block a user