At Thu, 22 Aug 2013 19:03:44 +0300, Stratos Karafotis wrote:
On 08/22/2013 10:59 AM, Takashi Iwai wrote:
At Thu, 22 Aug 2013 00:42:41 +0300, Stratos Karafotis wrote:
Hi,
I get the following oops during boot when build with CONFIG_SND_DYNAMIC_MINORS not set (3.11-rc6). The issue is vanished building the kernel with CONFIG_SND_DYNAMIC_MINORS=y as suggested in printk message.
Regards, Stratos
Could you check the patch below? Thanks!
Takashi
From: Takashi Iwai tiwai@suse.de Subject: [PATCH] ALSA: hda - Fix NULL dereference with CONFIG_SND_DYNAMIC_MINORS=n
Without the dynamic minor assignment, HDMI codec may have less PCM instances than the number of pins, which eventually leads to Oops.
Reported-by: Stratos Karafotis stratosk@semaphore.gr Cc: stable@vger.kernel.org Signed-off-by: Takashi Iwai tiwai@suse.de
sound/pci/hda/patch_hdmi.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 030ca86..e2cb92b 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1781,6 +1781,9 @@ static int generic_hdmi_build_controls(struct hda_codec *codec) struct snd_pcm_chmap *chmap; struct snd_kcontrol *kctl; int i;
if (pin_idx >= codec->num_pcms)
err = snd_pcm_add_chmap_ctls(codec->pcm_info[pin_idx].pcm, SNDRV_PCM_STREAM_PLAYBACK, NULL, 0, pin_idx, &chmap);break;
Hi,
Unfortunately, still the same problem after applying your patch.
Bah, it's a wrong one. The patch below should work better. Sorry for inconvenience.
Takashi
--- From: Takashi Iwai tiwai@suse.de Subject: [PATCH v2] ALSA: hda - Fix NULL dereference with CONFIG_SND_DYNAMIC_MINORS=n
Without the dynamic minor assignment, HDMI codec may have less PCM instances than the number of pins, which eventually leads to Oops.
Reported-by: Stratos Karafotis stratosk@semaphore.gr Cc: stable@vger.kernel.org Signed-off-by: Takashi Iwai tiwai@suse.de --- sound/pci/hda/patch_hdmi.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index 030ca86..9f35862 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -1781,6 +1781,9 @@ static int generic_hdmi_build_controls(struct hda_codec *codec) struct snd_pcm_chmap *chmap; struct snd_kcontrol *kctl; int i; + + if (!codec->pcm_info[pin_idx].pcm) + break; err = snd_pcm_add_chmap_ctls(codec->pcm_info[pin_idx].pcm, SNDRV_PCM_STREAM_PLAYBACK, NULL, 0, pin_idx, &chmap);