[bug report] ALSA: seq: Use no intrruptible mutex_lock

Dan Carpenter dan.carpenter at oracle.com
Mon Feb 1 14:13:14 CET 2021


Hello Takashi Iwai,

The patch 04702e8d0092: "ALSA: seq: Use no intrruptible mutex_lock"
from Aug 1, 2018, leads to the following static checker warning:

	sound/core/seq/seq_clientmgr.c:2194 snd_seq_create_kernel_client()
	warn: called with lock held.  '&register_mutex'

sound/core/seq/seq_midi.c
   294          if (ports > (256 / SNDRV_RAWMIDI_DEVICES))
   295                  ports = 256 / SNDRV_RAWMIDI_DEVICES;
   296  
   297          mutex_lock(&register_mutex);
                           ^^^^^^^^^^^^^^^
Holding lock

   298          client = synths[card->number];
   299          if (client == NULL) {
   300                  newclient = 1;
   301                  client = kzalloc(sizeof(*client), GFP_KERNEL);
   302                  if (client == NULL) {
   303                          mutex_unlock(&register_mutex);
   304                          kfree(info);
   305                          return -ENOMEM;
   306                  }
   307                  client->seq_client =
   308                          snd_seq_create_kernel_client(
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Deadlock

   309                                  card, 0, "%s", card->shortname[0] ?
   310                                  (const char *)card->shortname : "External MIDI");
   311                  if (client->seq_client < 0) {
   312                          kfree(client);
   313                          mutex_unlock(&register_mutex);
   314                          kfree(info);
   315                          return -ENOMEM;
   316                  }
   317          }

regards,
dan carpenter


More information about the Alsa-devel mailing list