]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ALSA: seq: Fix lockdep warnings due to double mutex locks
authorTakashi Iwai <tiwai@suse.de>
Wed, 3 Feb 2016 07:32:44 +0000 (08:32 +0100)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 15 Feb 2016 20:45:32 +0000 (15:45 -0500)
commit44660dacb478f79d7fbc7cec0ef342414b563b6a
tree098cbf92d1c8f907f7ee804e88477e5dadd06e75
parenta2c892c31423bdef823c6f6b2d54c159be8f4e20
ALSA: seq: Fix lockdep warnings due to double mutex locks

[ Upstream commit 7f0973e973cd74aa40747c9d38844560cd184ee8 ]

The port subscription code uses double mutex locks for source and
destination ports, and this may become racy once when wrongly set up.
It leads to lockdep warning splat, typically triggered by fuzzer like
syzkaller, although the actual deadlock hasn't been seen, so far.

This patch simplifies the handling by reducing to two single locks, so
that no lockdep warning will be trigger any longer.

By splitting to two actions, a still-in-progress element shall be
added in one list while handling another.  For ignoring this element,
a new check is added in deliver_to_subscribers().

Along with it, the code to add/remove the subscribers list element was
cleaned up and refactored.

BugLink: http://lkml.kernel.org/r/CACT4Y+aKQXV7xkBW9hpQbzaDO7LrUvohxWh-UwMxXjDy-yBD=A@mail.gmail.com
Reported-by: Dmitry Vyukov <dvyukov@google.com>
Tested-by: Dmitry Vyukov <dvyukov@google.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
sound/core/seq/seq_clientmgr.c
sound/core/seq/seq_ports.c