panasonic-laptop: Handle errors properly if they happen
authorJean Delvare <jdelvare@suse.de>
Thu, 21 Oct 2010 09:48:47 +0000 (11:48 +0200)
committerMatthew Garrett <mjg@redhat.com>
Thu, 21 Oct 2010 14:10:49 +0000 (10:10 -0400)
acpi_pcc_retrieve_biosdata() returns success instead of error if
HKEY.SINF is invalid. Fix this.

Furthermore, if acpi_pcc_retrieve_biosdata() returns an error
during device addition, initialization is properly reverted but value
0 is returned, which means success. This would cause a crash when
later using or removing the device, so fix this too.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Harald Welte <laforge@gnumonks.org>
Cc: Bruno Premont <bonbons@linux-vserver.org>
Signed-off-by: Matthew Garrett <mjg@redhat.com>
drivers/platform/x86/panasonic-laptop.c

index b3b9e04..96dd341 100644 (file)
@@ -285,6 +285,7 @@ static int acpi_pcc_retrieve_biosdata(struct pcc_acpi *pcc, u32 *sinf)
        hkey = buffer.pointer;
        if (!hkey || (hkey->type != ACPI_TYPE_PACKAGE)) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid HKEY.SINF\n"));
+               status = AE_ERROR;
                goto end;
        }
 
@@ -596,6 +597,7 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
        if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) {
                ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
                                 "Couldn't retrieve BIOS data\n"));
+               result = -EIO;
                goto out_input;
        }
        /* initialize backlight */