Pull cpu-hotplug into release branch
[sfrench/cifs-2.6.git] / drivers / acpi / processor_perflib.c
index 22c7bb66c2005c4956a241c7a31a566d9ae6b073..f36db22ce1aeb9b745ee815f6266779f31e98945 100644 (file)
@@ -315,8 +315,6 @@ static int acpi_processor_get_performance_info(struct acpi_processor *pr)
        if (!pr || !pr->performance || !pr->handle)
                return_VALUE(-EINVAL);
 
-       acpi_processor_set_pdc(pr, pr->performance->pdc);
-
        status = acpi_get_handle(pr->handle, "_PCT", &handle);
        if (ACPI_FAILURE(status)) {
                ACPI_DEBUG_PRINT((ACPI_DB_INFO,
@@ -520,8 +518,8 @@ static void acpi_cpufreq_add_file(struct acpi_processor *pr)
                                  "Unable to create '%s' fs entry\n",
                                  ACPI_PROCESSOR_FILE_PERFORMANCE));
        else {
+               acpi_processor_perf_fops.write = acpi_processor_write_performance;
                entry->proc_fops = &acpi_processor_perf_fops;
-               entry->proc_fops->write = acpi_processor_write_performance;
                entry->data = acpi_driver_data(device);
                entry->owner = THIS_MODULE;
        }
@@ -579,6 +577,8 @@ acpi_processor_register_performance(struct acpi_processor_performance
                return_VALUE(-EBUSY);
        }
 
+       WARN_ON(!performance);
+
        pr->performance = performance;
 
        if (acpi_processor_get_performance_info(pr)) {
@@ -611,7 +611,8 @@ acpi_processor_unregister_performance(struct acpi_processor_performance
                return_VOID;
        }
 
-       kfree(pr->performance->states);
+       if (pr->performance)
+               kfree(pr->performance->states);
        pr->performance = NULL;
 
        acpi_cpufreq_remove_file(pr);