Message ID | 20210811161441.1325250-1-perex@perex.cz (mailing list archive) |
---|---|
State | Accepted |
Commit | a2befe9380dd04ee76c871568deca00eedf89134 |
Headers | show |
Series | ALSA: hda - fix the 'Capture Switch' value change notifications | expand |
On Wed, 11 Aug 2021 18:14:41 +0200, Jaroslav Kysela wrote: > > The original code in the cap_put_caller() function does not > handle correctly the positive values returned from the passed > function for multiple iterations. It means that the change > notifications may be lost. > > Fixes: 352f7f914ebb ("ALSA: hda - Merge Realtek parser code to generic parser") > BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=213851 > Cc: <stable@kernel.org> > Signed-off-by: Jaroslav Kysela <perex@perex.cz> Thanks, applied. Takashi
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index e97d00585e8e..481d8f8d3396 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c @@ -3460,7 +3460,7 @@ static int cap_put_caller(struct snd_kcontrol *kcontrol, struct hda_gen_spec *spec = codec->spec; const struct hda_input_mux *imux; struct nid_path *path; - int i, adc_idx, err = 0; + int i, adc_idx, ret, err = 0; imux = &spec->input_mux; adc_idx = kcontrol->id.index; @@ -3470,9 +3470,13 @@ static int cap_put_caller(struct snd_kcontrol *kcontrol, if (!path || !path->ctls[type]) continue; kcontrol->private_value = path->ctls[type]; - err = func(kcontrol, ucontrol); - if (err < 0) + ret = func(kcontrol, ucontrol); + if (ret < 0) { + err = ret; break; + } + if (ret > 0) + err = 1; } mutex_unlock(&codec->control_mutex); if (err >= 0 && spec->cap_sync_hook)
The original code in the cap_put_caller() function does not handle correctly the positive values returned from the passed function for multiple iterations. It means that the change notifications may be lost. Fixes: 352f7f914ebb ("ALSA: hda - Merge Realtek parser code to generic parser") BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=213851 Cc: <stable@kernel.org> Signed-off-by: Jaroslav Kysela <perex@perex.cz> --- sound/pci/hda/hda_generic.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)