32 lines
1.4 KiB
Diff
32 lines
1.4 KiB
Diff
From 33950693dc7b0306b42d8efffbe26bfa5caa478b Mon Sep 17 00:00:00 2001
|
|
From: Takashi Iwai <tiwai@suse.de>
|
|
Date: Wed, 20 Aug 2025 07:19:01 +0200
|
|
Subject: ALSA: hda: tas2781: Fix wrong reference of tasdevice_priv
|
|
|
|
During the conversion to unify the calibration data management, the
|
|
reference to tasdevice_priv was wrongly set to h->hda_priv instead of
|
|
h->priv. This resulted in memory corruption and crashes eventually.
|
|
Unfortunately it's a void pointer, hence the compiler couldn't know
|
|
that it's wrong.
|
|
|
|
Fixes: 4fe238513407 ("ALSA: hda/tas2781: Move and unified the calibrated-data getting function for SPI and I2C into the tas2781_hda lib")
|
|
Link: https://bugzilla.suse.com/show_bug.cgi?id=1248270
|
|
Cc: <stable@vger.kernel.org>
|
|
Link: https://patch.msgid.link/20250820051902.4523-1-tiwai@suse.de
|
|
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
|
---
|
|
sound/pci/hda/tas2781_hda_i2c.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
--- a/sound/pci/hda/tas2781_hda_i2c.c
|
|
+++ b/sound/pci/hda/tas2781_hda_i2c.c
|
|
@@ -287,7 +287,7 @@ static int tas2563_save_calibration(stru
|
|
efi_char16_t efi_name[TAS2563_CAL_VAR_NAME_MAX];
|
|
unsigned long max_size = TAS2563_CAL_DATA_SIZE;
|
|
unsigned char var8[TAS2563_CAL_VAR_NAME_MAX];
|
|
- struct tasdevice_priv *p = h->hda_priv;
|
|
+ struct tasdevice_priv *p = h->priv;
|
|
struct calidata *cd = &p->cali_data;
|
|
struct cali_reg *r = &cd->cali_reg_array;
|
|
unsigned int offset = 0;
|