On Fri, 01 Jan 2021 06:15:42 +0100, Jan Alexander Steffens (heftig) wrote: > > On Thu, 2020-12-10 at 19:44 +0200, Kai Vehmanen wrote: > > +static void silent_stream_disable(struct hda_codec *codec, > > + struct hdmi_spec_per_pin *per_pin) > > +{ > > + struct hdmi_spec *spec = codec->spec; > > + struct hdmi_spec_per_cvt *per_cvt; > > + int cvt_idx; > > + > > + mutex_lock(&per_pin->lock); > > + if (!per_pin->silent_stream) > > + goto unlock_out; > > + > > + codec_dbg(codec, "HDMI: disable silent stream on pin-NID=0x%x > > cvt-NID=0x%x\n", > > + per_pin->pin_nid, per_pin->cvt_nid); > > + > > + cvt_idx = cvt_nid_to_cvt_index(codec, per_pin->cvt_nid); > > + if (cvt_idx >= 0 && cvt_idx < spec->num_cvts) { > > + per_cvt = get_cvt(spec, cvt_idx); > > + per_cvt->assigned = 0; > > + } > > + > > + per_pin->cvt_nid = 0; > > + per_pin->silent_stream = false; > > + > > + unlock_out: > > + mutex_unlock(&spec->pcm_lock); > > Shouldn't this be `mutex_unlock(&per_pin->lock);`? Oh yes, obviously. > I'm experiencing deadlocks since 5.10.4, which backported this patch. Could you check whether correcting the unlock fixes the problem? thanks, Takashi