Re: [BUG] ALSA: core: seq: a possible double-lock bug in snd_seq_midisynth_remove()

2019-07-28 Thread Takashi Iwai
On Mon, 29 Jul 2019 05:54:07 +0200,
Jia-Ju Bai wrote:
> 
> In snd_seq_midisynth_remove(), there is a possible double-lock bug:
> snd_seq_midisynth_remove()
>     mutex_lock(_mutex); -- line 421
>     snd_seq_delete_kernel_client() --- line 436
>     seq_free_client() -- line 2244
>     mutex_lock(_mutex); -- line 294
> 
> This bug is found by a static analysis tool STCheck written by us.

No, it's a false-positive report.  Both register_mutex's are
static, hence they are local to each file.  That is, you're looking at
two different mutexes.


Takashi


[BUG] ALSA: core: seq: a possible double-lock bug in snd_seq_midisynth_remove()

2019-07-28 Thread Jia-Ju Bai

In snd_seq_midisynth_remove(), there is a possible double-lock bug:
snd_seq_midisynth_remove()
    mutex_lock(_mutex); -- line 421
    snd_seq_delete_kernel_client() --- line 436
    seq_free_client() -- line 2244
    mutex_lock(_mutex); -- line 294

This bug is found by a static analysis tool STCheck written by us.

I do not know how to correctly fix this bug, so I only report it.
A possible fix is to release the mutex lock before calling 
seq_free_client() in snd_seq_delete_kernel_client() and then acquiring 
the lock again after calling seq_free_client().



Best wishes,
Jia-Ju Bai