Re: [PATCH] ALSA: hda: Fix [codec] ID matching in patch files for IDs with bit 31 set

From: Takashi Iwai

Date: Sat Nov 07 2026 - 04:08:12 EST


On Fri, 06 Nov 2026 18:55:18 +0100,
Andrew Davison wrote:
>
> parse_codec_mode() reads the vendor and subsystem IDs of a patch file's
> [codec] line into an int, and skips the check when the value is zero or
> negative, as documented. An ID with bit 31 set, such as SigmaTel's
> 0x8384xxxx or Intel's 0x8086xxxx, comes out negative, so it is taken as
> a wildcard and the section is applied to every codec instead of the one
> it names.
>
> This was seen on an OpenPeak OpenFrame 2 with an IDT 92HD75B2X5
> (0x111d7608). A patch file written for the STAC9202 (0x83847632) in the
> related OpenFrame 1 was applied to it, swapping the headphone and
> speaker pin configurations, so auto-mute never muted the speaker.
>
> Read the IDs as long long, so real IDs are compared exactly. Values
> written as negative numbers (e.g. -1) still act as wildcards, as
> documented; a hex value such as 0xffffffff is now compared as written.
>
> Tested on 6.18.60 on an OpenFrame 2, with a rebuilt snd-hda-codec and
> the STAC9202 patch file: user_pin_configs stays empty for the IDT codec,
> and the headphone and line-out pins are assigned as the BIOS sets them.
> Not tested on a STAC9202 itself.
>
> The bug was tracked down and this fix written with an AI coding
> assistant (Claude Code, Claude Opus 5.5), which also ran the tests
> above. I have reviewed the change and the tests.
>
> Fixes: ef940b0403d4 ("ALSA: hda - Allow patching with any vendor/subsystem ids")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Andrew Davison <andy@xxxxxxxx>

Applied now. Thanks.


Takashi