11 Feb, 2020

1 commit

  • commit 2acf25f13ebe8beb40e97a1bbe76f36277c64f1e upstream.

    The loop termination for iterating over all formats should contain
    SNDRV_PCM_FORMAT_LAST, not less than it.

    Fixes: 9b151fec139d ("ALSA: dummy - Add debug proc file")
    Cc:
    Link: https://lore.kernel.org/r/20200201080530.22390-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

19 Jun, 2019

1 commit

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details you
    should have received a copy of the gnu general public license along
    with this program if not write to the free software foundation inc
    59 temple place suite 330 boston ma 02111 1307 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 1334 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070033.113240726@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

24 May, 2019

2 commits

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details you
    should have received a copy of the gnu general public license along
    with this program if not write to the free software foundation inc
    51 franklin st fifth floor boston ma 02110 1301 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 50 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190523091649.499889647@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details you
    should have received a copy of the gnu general public license along
    with this program if not write to the free software foundation inc
    675 mass ave cambridge ma 02139 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 441 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Michael Ellerman (powerpc)
    Reviewed-by: Richard Fontana
    Reviewed-by: Allison Randal
    Reviewed-by: Kate Stewart
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190520071858.739733335@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

21 May, 2019

2 commits


25 Mar, 2019

1 commit


18 Mar, 2019

1 commit


07 Feb, 2019

2 commits


16 Jan, 2019

1 commit


09 Aug, 2018

1 commit


03 Aug, 2018

1 commit

  • For a sake of code simplification, remove the init and the exit
    entries that do nothing.

    Notes for readers: actually it's OK to remove *both* init and exit,
    but not OK to remove the exit entry. By removing only the exit while
    keeping init, the module becomes permanently loaded; i.e. you cannot
    unload it any longer!

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

26 Jul, 2018

1 commit

  • Move the declarations of common variables into opl3_voice.h instead of
    declaring at each file multiple times, which was error-prone.

    This fixes sparse warnings like:
    sound/drivers/opl3/opl3_synth.c:51:6: warning: symbol 'snd_opl3_regmap' was not declared. Should it be static?

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

18 Jul, 2018

1 commit

  • snd_pcm_lib_mmap_vmalloc() was supposed to be implemented with
    somewhat special for vmalloc handling, but in the end, this turned to
    just the default handler, i.e. NULL. As the situation has never
    changed over decades, let's rip it off.

    Reviewed-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

16 Jul, 2018

1 commit


16 Jun, 2018

1 commit

  • As we move stuff around, some doc references are broken. Fix some of
    them via this script:
    ./scripts/documentation-file-ref-check --fix

    Manually checked if the produced result is valid, removing a few
    false-positives.

    Acked-by: Takashi Iwai
    Acked-by: Masami Hiramatsu
    Acked-by: Stephen Boyd
    Acked-by: Charles Keepax
    Acked-by: Mathieu Poirier
    Reviewed-by: Coly Li
    Signed-off-by: Mauro Carvalho Chehab
    Acked-by: Jonathan Corbet

    Mauro Carvalho Chehab
     

28 May, 2018

2 commits

  • The PCM ops defined for playback and capture are identical. Just use
    the single one for both.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Convert the S_ symbolic permissions to their octal equivalents as
    using octal and not symbolic permissions is preferred by many as more
    readable.

    see: https://lkml.org/lkml/2016/8/2/1945

    Done with automated conversion via:
    $ ./scripts/checkpatch.pl -f --types=SYMBOLIC_PERMS --fix-inplace

    Miscellanea:

    o Wrapped one multi-line call to a single line

    Signed-off-by: Joe Perches
    Acked-by: Vinod Koul
    Signed-off-by: Takashi Iwai

    Joe Perches
     

30 Apr, 2018

1 commit

  • Some control API callbacks in aloop driver are too lazy to take the
    loopback->cable_lock and it results in possible races of cable access
    while it's being freed. It eventually lead to a UAF, as reported by
    fuzzer recently.

    This patch covers such control API callbacks and add the proper mutex
    locks.

    Reported-by: DaeRyong Jeong
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

25 Apr, 2018

1 commit

  • As recently Smatch suggested, one place in OPL3 driver may expand the
    array directly from the user-space value with speculation:
    sound/drivers/opl3/opl3_synth.c:476 snd_opl3_set_voice() warn: potential spectre issue 'snd_opl3_regmap'

    This patch puts array_index_nospec() for hardening against it.

    BugLink: https://marc.info/?l=linux-kernel&m=152411496503418&w=2
    Reported-by: Dan Carpenter
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

27 Mar, 2018

1 commit

  • Show paused ALSA aloop device as inactive, i.e. the control
    "PCM Slave Active" set as false. Notification sent upon state change.

    This makes it possible for client capturing from aloop device to know if
    data is expected. Without it the client expects data even if playback
    is paused.

    Signed-off-by: Robert Rosengren
    Signed-off-by: Takashi Iwai

    Robert Rosengren
     

22 Mar, 2018

2 commits

  • In loopback_open() and loopback_close(), we assign and release the
    substream object to the corresponding cable in a racy way. It's
    neither locked nor done in the right position. The open callback
    assigns the substream before its preparation finishes, hence the other
    side of the cable may pick it up, which may lead to the invalid memory
    access.

    This patch addresses these: move the assignment to the end of the open
    callback, and wrap with cable->lock for avoiding concurrent accesses.

    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The aloop driver tries to stop the pending timer via timer_del() in
    the trigger callback and in the close callback. The former is
    correct, as it's an atomic operation, while the latter expects that
    the timer gets really removed and proceeds the resource releases after
    that. But timer_del() doesn't synchronize, hence the running timer
    may still access the released resources.

    A similar situation can be also seen in the prepare callback after
    trigger(STOP) where the prepare tries to re-initialize the things
    while a timer is still running.

    The problems like the above are seen indirectly in some syzkaller
    reports (although it's not 100% clear whether this is the only cause,
    as the race condition is quite narrow and not always easy to
    trigger).

    For addressing these issues, this patch adds the explicit alls of
    timer_del_sync() in some places, so that the pending timer is properly
    killed / synced.

    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

30 Jan, 2018

1 commit

  • Pull timer updates from Thomas Gleixner:
    "The timer departement presents:

    - A rather large rework of the hrtimer infrastructure which
    introduces softirq based hrtimers to replace the spread of
    hrtimer/tasklet combos which force the actual callback execution
    into softirq context. The approach is completely different from the
    initial implementation which you cursed at 10 years ago rightfully.

    The softirq based timers have their own queues and there is no
    nasty indirection and list reshuffling in the hard interrupt
    anymore. This comes with conversion of some of the hrtimer/tasklet
    users, the rest and the final removal of that horrible interface
    will come towards the end of the merge window or go through the
    relevant maintainer trees.

    Note: The top commit merged the last minute bugfix for the 10 years
    old CPU hotplug bug as I wanted to make sure that I fatfinger the
    merge conflict resolution myself.

    - The overhaul of the STM32 clocksource/clockevents driver

    - A new driver for the Spreadtrum SC9860 timer

    - A new driver dor the Actions Semi S700 timer

    - The usual set of fixes and updates all over the place"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
    usb/gadget/NCM: Replace tasklet with softirq hrtimer
    ALSA/dummy: Replace tasklet with softirq hrtimer
    hrtimer: Implement SOFT/HARD clock base selection
    hrtimer: Implement support for softirq based hrtimers
    hrtimer: Prepare handling of hard and softirq based hrtimers
    hrtimer: Add clock bases and hrtimer mode for softirq context
    hrtimer: Use irqsave/irqrestore around __run_hrtimer()
    hrtimer: Factor out __hrtimer_next_event_base()
    hrtimer: Factor out __hrtimer_start_range_ns()
    hrtimer: Remove the 'base' parameter from hrtimer_reprogram()
    hrtimer: Make remote enqueue decision less restrictive
    hrtimer: Unify remote enqueue handling
    hrtimer: Unify hrtimer removal handling
    hrtimer: Make hrtimer_force_reprogramm() unconditionally available
    hrtimer: Make hrtimer_reprogramm() unconditional
    hrtimer: Make hrtimer_cpu_base.next_timer handling unconditional
    hrtimer: Make the remote enqueue check unconditional
    hrtimer: Use accesor functions instead of direct access
    hrtimer: Make the hrtimer_cpu_base::hres_active field unconditional, to simplify the code
    hrtimer: Make room in 'struct hrtimer_cpu_base'
    ...

    Linus Torvalds
     

27 Jan, 2018

1 commit


16 Jan, 2018

1 commit

  • The tasklet is used to defer the execution of snd_pcm_period_elapsed() to
    the softirq context. Using the HRTIMER_MODE_SOFT mode invokes the timer
    callback in softirq context as well which renders the tasklet useless.

    [o-takashi: avoid stall due to a call of hrtimer_cancel() on a callback of hrtimer]

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Anna-Maria Gleixner
    Reviewed-by: Takashi Iwai
    Cc: Christoph Hellwig
    Cc: Jaroslav Kysela
    Cc: John Stultz
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Takashi Iwai
    Cc: Takashi Sakamoto
    Cc: alsa-devel@alsa-project.org
    Cc: keescook@chromium.org
    Link: http://lkml.kernel.org/r/20171221104205.7269-35-anna-maria@linutronix.de
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     

09 Jan, 2018

1 commit


05 Jan, 2018

3 commits

  • The aloop driver tries to update the hw constraints of the connected
    target on the cable of the opened PCM substream. This is done by
    adding the extra hw constraints rules referring to the substream
    runtime->hw fields, while the other substream may update the runtime
    hw of another side on the fly.

    This is, however, racy and may result in the inconsistent values when
    both PCM streams perform the prepare concurrently. One of the reason
    is that it overwrites the other's runtime->hw field; which is not only
    racy but also broken when it's called before the open of another side
    finishes. And, since the reference to runtime->hw isn't protected,
    the concurrent write may give the partial value update and become
    inconsistent.

    This patch is an attempt to fix and clean up:
    - The prepare doesn't change the runtime->hw of other side any longer,
    but only update the cable->hw that is referred commonly.
    - The extra rules refer to the loopback_pcm object instead of the
    runtime->hw. The actual hw is deduced from cable->hw.
    - The extra rules take the cable_lock to protect against the race.

    Fixes: b1c73fc8e697 ("ALSA: snd-aloop: Fix hw_params restrictions and checking")
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The extra hw constraint rule for the formats the aloop driver
    introduced has a slight flaw, where it doesn't return a positive value
    when the mask got changed. It came from the fact that it's basically
    a copy&paste from snd_hw_constraint_mask64(). The original code is
    supposed to be a single-shot and it modifies the mask bits only once
    and never after, while what we need for aloop is the dynamic hw rule
    that limits the mask bits.

    This difference results in the inconsistent state, as the hw_refine
    doesn't apply the dependencies fully. The worse and surprisingly
    result is that it causes a crash in OSS emulation when multiple
    full-duplex reads/writes are performed concurrently (I leave why it
    triggers Oops to readers as a homework).

    For fixing this, replace a few open-codes with the standard
    snd_mask_*() macros.

    Reported-by: syzbot+3902b5220e8ca27889ca@syzkaller.appspotmail.com
    Fixes: b1c73fc8e697 ("ALSA: snd-aloop: Fix hw_params restrictions and checking")
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The aloop runtime object and its assignment in the cable are left even
    when opening a substream fails. This doesn't mean any memory leak,
    but it still keeps the invalid pointer that may be referred by the
    another side of the cable spontaneously, which is a potential Oops
    cause.

    Clean up the cable assignment and the empty cable upon the error path
    properly.

    Fixes: 597603d615d2 ("ALSA: introduce the snd-aloop module for the PCM loopback")
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

29 Nov, 2017

1 commit

  • Don't populate array 'names' on the stack but instead make them static.
    Makes the object code smaller by 50 bytes:

    Before:
    text data bss dec hex filename
    21237 9192 1120 31549 7b3d linux/sound/drivers/dummy.o

    After:
    text data bss dec hex filename
    21095 9280 1120 31495 7b07 linux/sound/drivers/dummy.o

    (gcc version 7.2.0 x86_64)

    Signed-off-by: Colin Ian King
    Reviewed-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai

    Colin Ian King
     

13 Nov, 2017

1 commit

  • …e/sound into for-linus

    ASoC: Updates for v4.15

    The biggest thing this release has been the conversion of the AC98 bus
    to the driver model, that's been a long time coming so thanks to Robert
    Jarzmik for his dedication there. Due to there being some AC97 MFD
    there's a few fairly large changes in input and the MFD layer, mainly to
    the wm97xx driver.

    There's also some drivers/drm changes to support the new AMD Stoney
    platform, these are shared with the DRM subsystem and should be being
    merged via both.

    Within the subsystem the overwhelming bulk of the changes is in the
    Intel drivers which continue to need lots of cleanups and fixes, this
    release they've also gained support for their open source firmware.
    There's also some large changs in the core as Morimoto-san continues to
    mirror operations into the component level in preparation for conversion
    of drivers to that.

    - The AC97 bus has finally caught up with the driver model thanks to
    some dedicated and persistent work from Robert Jarzmik.
    - Continued work from Morimoto-san on moving us towards being able to
    use components for everything.
    - Lots of cleanups for the Intel platform code, including support for
    their open source audio firmware.
    - Support for scaling MCLK with sample rate in simple-card.
    - Support for AMD Stoney platform.

    Takashi Iwai
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

25 Oct, 2017

1 commit


31 Aug, 2017

2 commits


22 Aug, 2017

1 commit


19 Aug, 2017

1 commit