[alsa-devel] [PATCH] ALSA: hda - hdmi get jack from hda_jack_tbl when not dyn_pcm_assign

Yang, Libin libin.yang at intel.com
Thu Feb 18 09:06:47 CET 2016


Hi Takashi,

> -----Original Message-----
> From: Takashi Iwai [mailto:tiwai at suse.de]
> Sent: Thursday, February 18, 2016 3:55 PM
> To: Yang, Libin
> Cc: libin.yang at linux.intel.com; alsa-devel at alsa-project.org; Lin,
> Mengdong
> Subject: Re: [PATCH] ALSA: hda - hdmi get jack from hda_jack_tbl when
> not dyn_pcm_assign
> 
> On Thu, 18 Feb 2016 07:16:29 +0100,
> Yang, Libin wrote:
> >
> > Hi Takashi,
> >
> > I submitted the patch which can fix a regression involved from my
> > jack patch:
> > commit 25e4abb33df3aafa7d1efba8f82f9178268efab1
> > Author: Libin Yang <libin.yang at linux.intel.com>
> > Date:   Tue Jan 12 11:13:27 2016 +0800
> >
> >     ALSA: hda - hdmi jack created based on pcm
> >
> > I'm sorry for the inconvenience.
> >
> > As the dyn pcm patches are merged into the for-next branch, I'm asking
> > our QA to do the full test on it. They said they can start the stress test
> > from next week.
> 
> One concern is the report from CI test about the crash at unloading
> the module.  I couldn't reproduce it locally.  Could you take a look?

There is the same oops when unloading snd modules on my side
(it happens occasionally).
With the patch, the oops is fixed. But I didn't meet the crash. 
The system is still alive.

I'm asking for their test case. As soon as I get the test case, I will
do the test.

Regards,
Libin
> 
> 
> Takashi
> 
> >
> > Regards,
> > Libin
> >
> >
> > > -----Original Message-----
> > > From: libin.yang at linux.intel.com [mailto:libin.yang at linux.intel.com]
> > > Sent: Thursday, February 18, 2016 1:25 PM
> > > To: alsa-devel at alsa-project.org; tiwai at suse.de
> > > Cc: Lin, Mengdong; Yang, Libin; Libin Yang
> > > Subject: [PATCH] ALSA: hda - hdmi get jack from hda_jack_tbl when
> not
> > > dyn_pcm_assign
> > >
> > > From: Libin Yang <libin.yang at linux.intel.com>
> > >
> > > On Intel platform, if !dyn_pcm_assign, spec->pcm_rec[].jack is not
> > > NULL even after snd_hda_jack_tbl_clear() is called to free snd_jack.
> > > This may cause access invalid memory when calling snd_jack_report.
> > >
> > > Please see more detail from:
> > > https://bugs.freedesktop.org/show_bug.cgi?id=94079
> > >
> > > Signed-off-by: Libin Yang <libin.yang at linux.intel.com>
> > > ---
> > >  sound/pci/hda/patch_hdmi.c | 16 ++++++++++++++--
> > >  1 file changed, 14 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/sound/pci/hda/patch_hdmi.c
> b/sound/pci/hda/patch_hdmi.c
> > > index f4443b5..3b47101 100644
> > > --- a/sound/pci/hda/patch_hdmi.c
> > > +++ b/sound/pci/hda/patch_hdmi.c
> > > @@ -1962,6 +1962,7 @@ static void sync_eld_via_acomp(struct
> > > hda_codec *codec,
> > >  {
> > >  	struct hdmi_spec *spec = codec->spec;
> > >  	struct hdmi_eld *eld = &spec->temp_eld;
> > > +	struct hda_jack_tbl *jack_tbl;
> > >  	struct snd_jack *jack = NULL;
> > >  	int size;
> > >
> > > @@ -1989,10 +1990,21 @@ static void sync_eld_via_acomp(struct
> > > hda_codec *codec,
> > >  	/* pcm_idx >=0 before update_eld() means it is in monitor
> > >  	 * disconnected event. Jack must be fetched before update_eld()
> > >  	 */
> > > -	if (per_pin->pcm_idx >= 0)
> > > +	/* if !dyn_pcm_assign, get jack from hda_jack_tbl
> > > +	 * in !dyn_pcm_assign case, spec->pcm_rec[].jack is not
> > > +	 * NULL even after snd_hda_jack_tbl_clear() is called to
> > > +	 * free snd_jack. This may cause access invalid memory
> > > +	 * when calling snd_jack_report
> > > +	 */
> > > +	if (per_pin->pcm_idx >= 0 && spec->dyn_pcm_assign)
> > >  		jack = spec->pcm_rec[per_pin->pcm_idx].jack;
> > > +	else {
> > > +		jack_tbl = snd_hda_jack_tbl_get(codec, per_pin-
> > > >pin_nid);
> > > +		if (jack_tbl)
> > > +			jack = jack_tbl->jack;
> > > +	}
> > >  	update_eld(codec, per_pin, eld);
> > > -	if (jack == NULL && per_pin->pcm_idx >= 0)
> > > +	if (jack == NULL && per_pin->pcm_idx >= 0 && spec-
> > > >dyn_pcm_assign)
> > >  		jack = spec->pcm_rec[per_pin->pcm_idx].jack;
> > >  	if (jack == NULL)
> > >  		goto unlock;
> > > --
> > > 1.9.1
> >


More information about the Alsa-devel mailing list