Dear Takashi:
Hans de Goede (on cc:) hits a problem when snd-usb-audio breaks with: "USB device is in the shutdown state, cannot create a card instance".
This is how the place looks:
chip = NULL; for (i = 0; i < SNDRV_CARDS; i++) { if (usb_chip[i] && usb_chip[i]->dev == dev) { if (usb_chip[i]->shutdown) { snd_printk(KERN_ERR "USB device is in the shutdown state, cannot create a card instance\n"); goto __error; } chip = usb_chip[i]; break; } }
The code looks broken to me, because dev at this time is a new device structure, freshly allocated. You cannot compare it with an old instance, and I don't know why you would want to.
Unfortunately (for fortunately), I have zero clue about the way ALSA works, specifically rules for snd_device_ops.dev_free, so I am asking you to look at this problem.
Yours, -- Pete