Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64...
[platform/kernel/linux-rpi.git] / drivers / acpi / arm64 / iort.c
index 3752521..4a5bb96 100644 (file)
@@ -333,7 +333,7 @@ struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
                return NULL;
 
        map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node,
-                          node->mapping_offset);
+                          node->mapping_offset + index * sizeof(*map));
 
        /* Firmware bug! */
        if (!map->output_reference) {
@@ -348,10 +348,10 @@ struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
        if (!(IORT_TYPE_MASK(parent->type) & type_mask))
                return NULL;
 
-       if (map[index].flags & ACPI_IORT_ID_SINGLE_MAPPING) {
+       if (map->flags & ACPI_IORT_ID_SINGLE_MAPPING) {
                if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT ||
                    node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) {
-                       *id_out = map[index].output_base;
+                       *id_out = map->output_base;
                        return parent;
                }
        }
@@ -828,7 +828,7 @@ static int __init iort_add_smmu_platform_device(struct acpi_iort_node *node)
 
        pdev = platform_device_alloc(ops->name, PLATFORM_DEVID_AUTO);
        if (!pdev)
-               return PTR_ERR(pdev);
+               return -ENOMEM;
 
        count = ops->iommu_count_resources(node);