Merge branch 'pm-cpuidle'
[firefly-linux-kernel-4.4.55.git] / drivers / acpi / acpi_platform.c
index 32136b85196d438e665b27bb7e5686e3e1fa243f..1bde12708f9e112c708bb71ae8d6162af5e367a9 100644 (file)
@@ -61,25 +61,23 @@ int acpi_create_platform_device(struct acpi_device *adev,
 
        INIT_LIST_HEAD(&resource_list);
        count = acpi_dev_get_resources(adev, &resource_list, NULL, NULL);
-       if (count < 0)
+       if (count < 0) {
                return 0;
+       } else if (count > 0) {
+               resources = kmalloc(count * sizeof(struct resource),
+                                   GFP_KERNEL);
+               if (!resources) {
+                       dev_err(&adev->dev, "No memory for resources\n");
+                       acpi_dev_free_resource_list(&resource_list);
+                       return -ENOMEM;
+               }
+               count = 0;
+               list_for_each_entry(rentry, &resource_list, node)
+                       resources[count++] = rentry->res;
 
-       if (!count)
-               goto create_dev;
-
-       resources = kmalloc(count * sizeof(struct resource), GFP_KERNEL);
-       if (!resources) {
-               dev_err(&adev->dev, "No memory for resources\n");
                acpi_dev_free_resource_list(&resource_list);
-               return -ENOMEM;
        }
-       count = 0;
-       list_for_each_entry(rentry, &resource_list, node)
-               resources[count++] = rentry->res;
-
-       acpi_dev_free_resource_list(&resource_list);
 
-create_dev:
        memset(&pdevinfo, 0, sizeof(pdevinfo));
        /*
         * If the ACPI node has a parent and that parent has a physical device