]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: hda: cs35l41: Fix NULL pointer dereference in cs35l41_get_acpi_mute_state()
authorDenis Arefev <arefev@swemel.ru>
Tue, 7 Oct 2025 07:38:31 +0000 (10:38 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Oct 2025 14:24:25 +0000 (16:24 +0200)
commit 8527bbb33936340525a3504a00932b2f8fd75754 upstream.

Return value of a function acpi_evaluate_dsm() is dereferenced  without
checking for NULL, but it is usually checked for this function.

acpi_evaluate_dsm() may return NULL, when acpi_evaluate_object() returns
acpi_status other than ACPI_SUCCESS, so add a check to prevent the crach.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: 447106e92a0c ("ALSA: hda: cs35l41: Support mute notifications for CS35L41 HDA")
Cc: stable@vger.kernel.org
Signed-off-by: Denis Arefev <arefev@swemel.ru>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/hda/codecs/side-codecs/cs35l41_hda.c

index 37f2cdc8ce8243362e61898f87e6a01f3c5cb27e..0ef77fae040227feb8e4a83dddf1996a29f61db1 100644 (file)
@@ -1426,6 +1426,8 @@ static int cs35l41_get_acpi_mute_state(struct cs35l41_hda *cs35l41, acpi_handle
 
        if (cs35l41_dsm_supported(handle, CS35L41_DSM_GET_MUTE)) {
                ret = acpi_evaluate_dsm(handle, &guid, 0, CS35L41_DSM_GET_MUTE, NULL);
+               if (!ret)
+                       return -EINVAL;
                mute = *ret->buffer.pointer;
                dev_dbg(cs35l41->dev, "CS35L41_DSM_GET_MUTE: %d\n", mute);
        }