* [PATCH v2] ALSA: hda/conexant: Fix missing error check for jack detection
@ 2026-04-28 8:04 wangdich9700
2026-04-29 5:50 ` Takashi Iwai
0 siblings, 1 reply; 2+ messages in thread
From: wangdich9700 @ 2026-04-28 8:04 UTC (permalink / raw)
To: tiwai, wangdich9700, bo.liu
Cc: linux-sound, linux-kernel, alsa-devel, wangdicheng
From: wangdicheng <wangdicheng@kylinos.cn>
In cx_probe(), the return value of snd_hda_jack_detect_enable_callback()
is ignored. This function returns a pointer, and if it fails (e.g., due
to memory allocation failure), it returns an error pointer which must
be checked using IS_ERR().
If the registration fails, the driver continues to probe, but the jack
detection callback will not be registered. This can lead to a kernel
crash later when the driver attempts to handle jack events or accesses
the uninitialized structure.
Check the return value using IS_ERR() and propagate the error via
PTR_ERR() to the probe caller.
Fixes: 7aeb25908648 ("ALSA: hda/conexant: Fix headset auto detect fail in cx8070 and SN6140")
Signed-off-by: wangdicheng <wangdicheng@kylinos.cn>
---
v1 -> v2:
Use IS_ERR() and PTR_ERR() to handle pointer return value.
Add Fixes tag.
sound/hda/codecs/conexant.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/sound/hda/codecs/conexant.c b/sound/hda/codecs/conexant.c
index 3a9717df39b4..e3b6aaabe3a9 100644
--- a/sound/hda/codecs/conexant.c
+++ b/sound/hda/codecs/conexant.c
@@ -1175,6 +1175,7 @@ static void add_cx5051_fake_mutes(struct hda_codec *codec)
static int cx_probe(struct hda_codec *codec, const struct hda_device_id *id)
{
struct conexant_spec *spec;
+ struct hda_jack_callback *callback;
int err;
codec_info(codec, "%s: BIOS auto-probing.\n", codec->core.chip_name);
@@ -1190,7 +1191,12 @@ static int cx_probe(struct hda_codec *codec, const struct hda_device_id *id)
case 0x14f11f86:
case 0x14f11f87:
spec->is_cx11880_sn6140 = true;
- snd_hda_jack_detect_enable_callback(codec, 0x19, cx_update_headset_mic_vref);
+ callback = snd_hda_jack_detect_enable_callback(codec, 0x19,
+ cx_update_headset_mic_vref);
+ if (IS_ERR(callback)) {
+ err = PTR_ERR(callback);
+ goto error;
+ }
break;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] ALSA: hda/conexant: Fix missing error check for jack detection
2026-04-28 8:04 [PATCH v2] ALSA: hda/conexant: Fix missing error check for jack detection wangdich9700
@ 2026-04-29 5:50 ` Takashi Iwai
0 siblings, 0 replies; 2+ messages in thread
From: Takashi Iwai @ 2026-04-29 5:50 UTC (permalink / raw)
To: wangdich9700
Cc: tiwai, bo.liu, linux-sound, linux-kernel, alsa-devel, wangdicheng
On Tue, 28 Apr 2026 10:04:50 +0200,
wangdich9700@163.com wrote:
>
> From: wangdicheng <wangdicheng@kylinos.cn>
>
> In cx_probe(), the return value of snd_hda_jack_detect_enable_callback()
> is ignored. This function returns a pointer, and if it fails (e.g., due
> to memory allocation failure), it returns an error pointer which must
> be checked using IS_ERR().
>
> If the registration fails, the driver continues to probe, but the jack
> detection callback will not be registered. This can lead to a kernel
> crash later when the driver attempts to handle jack events or accesses
> the uninitialized structure.
>
> Check the return value using IS_ERR() and propagate the error via
> PTR_ERR() to the probe caller.
>
> Fixes: 7aeb25908648 ("ALSA: hda/conexant: Fix headset auto detect fail in cx8070 and SN6140")
> Signed-off-by: wangdicheng <wangdicheng@kylinos.cn>
Applied now. Thanks.
Takashi
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-29 5:50 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-28 8:04 [PATCH v2] ALSA: hda/conexant: Fix missing error check for jack detection wangdich9700
2026-04-29 5:50 ` Takashi Iwai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox