lkml.org 
[lkml]   [2016]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.12 043/142] ALSA: timer: Fix wrong instance passed to slave callbacks
    Date
    From: Takashi Iwai <tiwai@suse.de>

    3.12-stable review patch. If anyone has any objections, please let me know.

    ===============

    commit 117159f0b9d392fb433a7871426fad50317f06f7 upstream.

    In snd_timer_notify1(), the wrong timer instance was passed for slave
    ccallback function. This leads to the access to the wrong data when
    an incompatible master is handled (e.g. the master is the sequencer
    timer and the slave is a user timer), as spotted by syzkaller fuzzer.

    This patch fixes that wrong assignment.

    BugLink: http://lkml.kernel.org/r/CACT4Y+Y_Bm+7epAb=8Wi=AaWd+DYS7qawX52qxdCfOfY49vozQ@mail.gmail.com
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    ---
    sound/core/timer.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/sound/core/timer.c b/sound/core/timer.c
    index 6c2e5c8f5af6..ef62ffbcfa8c 100644
    --- a/sound/core/timer.c
    +++ b/sound/core/timer.c
    @@ -414,7 +414,7 @@ static void snd_timer_notify1(struct snd_timer_instance *ti, int event)
    spin_lock_irqsave(&timer->lock, flags);
    list_for_each_entry(ts, &ti->slave_active_head, active_list)
    if (ts->ccallback)
    - ts->ccallback(ti, event + 100, &tstamp, resolution);
    + ts->ccallback(ts, event + 100, &tstamp, resolution);
    spin_unlock_irqrestore(&timer->lock, flags);
    }

    --
    2.7.1
    \
     
     \ /
      Last update: 2016-02-24 12:41    [W:4.384 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site