Re: bisected regression in v5.11-rc1 snd-usb-audio

From: Takashi Iwai
Date: Sat Jan 23 2021 - 07:46:30 EST


On Sat, 23 Jan 2021 12:08:02 +0100,
Jamie Heilman wrote:
>
> > If the problem is still seen with the very latest Linus tree and the
> > previous patch, please enable the dyndbg, e.g. pass dydbg=+p option to
> > snd-usb-audio module, i.e. reload like
> > modprobe snd-usb-audio dydbg=+p
> > or boot with
> > snd_usb_audio.dyndbg=+p
> > boot option, retest, and give the kernel messages.
>
> OK, updated to 5.11.0-rc4-00202-gfe75a21824e7, repatched & rebuilt with:
> CONFIG_SND_DEBUG=y
> CONFIG_SND_CTL_VALIDATION=y
> CONFIG_DYNAMIC_DEBUG=y
> CONFIG_DYNAMIC_DEBUG_CORE=y
>
> and added dyndbg=+p to my snd-usb-audio options, dmesg after an
> attempted aplay execution is attached.
(snip)
> [ 108.941521] WARNING: CPU: 0 PID: 2776 at sound/core/pcm_lib.c:1148 snd_pcm_hw_rule_add+0xd3/0x160 [snd_pcm]

OK, this must be the culprit of the weird behavior.
I totally overlooked that the max dependencies are three because of
the terminator.

Could you try the patch below in addition?


thanks,

Takashi

--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -229,7 +229,7 @@ typedef int (*snd_pcm_hw_rule_func_t)(struct snd_pcm_hw_params *params,
struct snd_pcm_hw_rule {
unsigned int cond;
int var;
- int deps[4];
+ int deps[5];

snd_pcm_hw_rule_func_t func;
void *private;