On Mon, 01 Feb 2021 14:13:14 +0100, Dan Carpenter wrote: > > 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. '®ister_mutex' > > sound/core/seq/seq_midi.c > 294 if (ports > (256 / SNDRV_RAWMIDI_DEVICES)) > 295 ports = 256 / SNDRV_RAWMIDI_DEVICES; > 296 > 297 mutex_lock(®ister_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(®ister_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(®ister_mutex); > 314 kfree(info); > 315 return -ENOMEM; > 316 } > 317 } Again, both register_mutex are different instances, where both are local static variables, hence they can't conflict with each other. thanks, Takashi