panasonic-laptop: Handle errors properly if they happen
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>
This commit is contained in:
Родитель
4119617919
Коммит
aa13857f13
|
@ -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 */
|
||||
|
|
Загрузка…
Ссылка в новой задаче