Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa13857f authored by Jean Delvare's avatar Jean Delvare Committed by Matthew Garrett
Browse files

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: default avatarJean Delvare <jdelvare@suse.de>
Cc: Harald Welte <laforge@gnumonks.org>
Cc: Bruno Premont <bonbons@linux-vserver.org>
Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
parent 41196179
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -285,6 +285,7 @@ static int acpi_pcc_retrieve_biosdata(struct pcc_acpi *pcc, u32 *sinf)
	hkey = buffer.pointer;
	hkey = buffer.pointer;
	if (!hkey || (hkey->type != ACPI_TYPE_PACKAGE)) {
	if (!hkey || (hkey->type != ACPI_TYPE_PACKAGE)) {
		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid HKEY.SINF\n"));
		ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Invalid HKEY.SINF\n"));
		status = AE_ERROR;
		goto end;
		goto end;
	}
	}


@@ -596,6 +597,7 @@ static int acpi_pcc_hotkey_add(struct acpi_device *device)
	if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) {
	if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) {
		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
		ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
				 "Couldn't retrieve BIOS data\n"));
				 "Couldn't retrieve BIOS data\n"));
		result = -EIO;
		goto out_input;
		goto out_input;
	}
	}
	/* initialize backlight */
	/* initialize backlight */