summaryrefslogtreecommitdiff
path: root/Documentation/ldm.txt
diff options
context:
space:
mode:
authorDaniel Mentz <danielmentz@google.com>2017-08-14 21:46:01 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-08-25 00:12:19 (GMT)
commitbafb25c5050caa96625df0430d2a80072183f4cf (patch)
tree308b285e68d1a93f33275db0673d4bf618d72381 /Documentation/ldm.txt
parent3f7292106d0bda25ef52a3342fb74b84b04f3585 (diff)
downloadlinux-bafb25c5050caa96625df0430d2a80072183f4cf.tar.xz
ALSA: seq: 2nd attempt at fixing race creating a queue
commit 7e1d90f60a0d501c8503e636942ca704a454d910 upstream. commit 4842e98f26dd80be3623c4714a244ba52ea096a8 ("ALSA: seq: Fix race at creating a queue") attempted to fix a race reported by syzkaller. That fix has been described as follows: " When a sequencer queue is created in snd_seq_queue_alloc(),it adds the new queue element to the public list before referencing it. Thus the queue might be deleted before the call of snd_seq_queue_use(), and it results in the use-after-free error, as spotted by syzkaller. The fix is to reference the queue object at the right time. " Even with that fix in place, syzkaller reported a use-after-free error. It specifically pointed to the last instruction "return q->queue" in snd_seq_queue_alloc(). The pointer q is being used after kfree() has been called on it. It turned out that there is still a small window where a race can happen. The window opens at snd_seq_ioctl_create_queue()->snd_seq_queue_alloc()->queue_list_add() and closes at snd_seq_ioctl_create_queue()->queueptr()->snd_use_lock_use(). Between these two calls, a different thread could delete the queue and possibly re-create a different queue in the same location in queue_list. This change prevents this situation by calling snd_use_lock_use() from snd_seq_queue_alloc() prior to calling queue_list_add(). It is then the caller's responsibility to call snd_use_lock_free(&q->use_lock). Fixes: 4842e98f26dd ("ALSA: seq: Fix race at creating a queue") Reported-by: Dmitry Vyukov <dvyukov@google.com> Signed-off-by: Daniel Mentz <danielmentz@google.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'Documentation/ldm.txt')
0 files changed, 0 insertions, 0 deletions