Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Sat, 23 Jun 2007 22:12:53 +0000 (15:12 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Sat, 23 Jun 2007 22:12:53 +0000 (15:12 -0700)
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
  ACPI: fix 2.6.20 SMP boot regression
  ACPICA: fix error path in new external package objects as method arguments
  ACPI: gracefully print null trip-point device

drivers/acpi/processor_idle.c
drivers/acpi/thermal.c
drivers/acpi/utilities/utobject.c

index ee5759bef9454df682d7520032e8c33f5bfbc0b8..80ffc782991631492d08c2dea2837972698e5193 100644 (file)
@@ -332,16 +332,18 @@ static void acpi_processor_idle(void)
        int sleep_ticks = 0;
        u32 t1, t2 = 0;
 
-       pr = processors[smp_processor_id()];
-       if (!pr)
-               return;
-
        /*
         * Interrupts must be disabled during bus mastering calculations and
         * for C2/C3 transitions.
         */
        local_irq_disable();
 
+       pr = processors[smp_processor_id()];
+       if (!pr) {
+               local_irq_enable();
+               return;
+       }
+
        /*
         * Check whether we truly need to go idle, or should
         * reschedule:
index 194ecfe8b3600d6195a491eae99483546f1a3abe..88a6fc7fd271e54dd63d1fabd537878276bf3a21 100644 (file)
@@ -828,6 +828,8 @@ static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
 {
        struct acpi_thermal *tz = seq->private;
        struct acpi_device *device;
+       acpi_status status;
+
        int i = 0;
        int j = 0;
 
@@ -850,8 +852,10 @@ static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
                           tz->trips.passive.tc1, tz->trips.passive.tc2,
                           tz->trips.passive.tsp);
                for (j = 0; j < tz->trips.passive.devices.count; j++) {
-                       acpi_bus_get_device(tz->trips.passive.devices.handles[j], &device);
-                       seq_printf(seq, "%4.4s ", acpi_device_bid(device));
+                       status = acpi_bus_get_device(tz->trips.passive.devices.
+                                                    handles[j], &device);
+                       seq_printf(seq, "%4.4s ", status ? "" :
+                                  acpi_device_bid(device));
                }
                seq_puts(seq, "\n");
        }
@@ -863,8 +867,11 @@ static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset)
                           i,
                           KELVIN_TO_CELSIUS(tz->trips.active[i].temperature));
                for (j = 0; j < tz->trips.active[i].devices.count; j++){
-                       acpi_bus_get_device(tz->trips.active[i].devices.handles[j], &device);
-                       seq_printf(seq, "%4.4s ", acpi_device_bid(device));
+                       status = acpi_bus_get_device(tz->trips.active[i].
+                                                    devices.handles[j],
+                                                    &device);
+                       seq_printf(seq, "%4.4s ", status ? "" :
+                                  acpi_device_bid(device));
                }
                seq_puts(seq, "\n");
        }
index db0b9bac7945f7bd55b55a0561b37104630ca23b..76ee766c84f948ed2d8749f06486338a792f7e05 100644 (file)
@@ -177,7 +177,7 @@ union acpi_operand_object *acpi_ut_create_package_object(u32 count)
        package_elements = ACPI_ALLOCATE_ZEROED((acpi_size)
                                                (count + 1) * sizeof(void *));
        if (!package_elements) {
-               ACPI_FREE(package_desc);
+               acpi_ut_remove_reference(package_desc);
                return_PTR(NULL);
        }