All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: alsa-devel@alsa-project.org
Subject: Re: [bug report] ALSA: seq: Use no intrruptible mutex_lock
Date: Mon, 01 Feb 2021 14:23:16 +0100	[thread overview]
Message-ID: <s5hk0rrj517.wl-tiwai@suse.de> (raw)
In-Reply-To: <YBf+arIyZvfQkDbP@mwanda>

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.  '&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          }

Again, both register_mutex are different instances, where both are
local static variables, hence they can't conflict with each other.


thanks,

Takashi

      reply	other threads:[~2021-02-01 13:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-01 13:13 [bug report] ALSA: seq: Use no intrruptible mutex_lock Dan Carpenter
2021-02-01 13:23 ` Takashi Iwai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hk0rrj517.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=dan.carpenter@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.