05 Feb, 2016

1 commit

  • In ALSA timer core, the active timer instance is managed in
    active_list linked list. Each element is added / removed dynamically
    at timer start, stop and in timer interrupt. The problem is that
    snd_timer_interrupt() has a thinko and leaves the element in
    active_list when it's the last opened element. This eventually leads
    to list corruption or use-after-free error.

    This hasn't been revealed because we used to delete the list forcibly
    in snd_timer_stop() in the past. However, the recent fix avoids the
    double-stop behavior (in commit [f784beb75ce8: ALSA: timer: Fix link
    corruption due to double start or stop]), and this leak hits reality.

    This patch fixes the link management in snd_timer_interrupt(). Now it
    simply unlinks no matter which stream is.

    BugLink: http://lkml.kernel.org/r/CACT4Y+Yy2aukHP-EDp8-ziNqNNmb-NTf=jDWXMP7jB8HDa2vng@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

03 Feb, 2016

9 commits

  • Takashi Iwai
     
  • 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
    Tested-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The rawmidi read and write functions manage runtime stream status
    such as runtime->appl_ptr and runtime->avail. These point where to
    copy the new data and how many bytes have been copied (or to be
    read). The problem is that rawmidi read/write call copy_from_user()
    or copy_to_user(), and the runtime spinlock is temporarily unlocked
    and relocked while copying user-space. Since the current code
    advances and updates the runtime status after the spin unlock/relock,
    the copy and the update may be asynchronous, and eventually
    runtime->avail might go to a negative value when many concurrent
    accesses are done. This may lead to memory corruption in the end.

    For fixing this race, in this patch, the status update code is
    performed in the same lock before the temporary unlock. Also, the
    spinlock is now taken more widely in snd_rawmidi_kernel_read1() for
    protecting more properly during the whole operation.

    BugLink: http://lkml.kernel.org/r/CACT4Y+b-dCmNf1GpgPKfDO0ih+uZCL2JV4__j-r1kdhPLSgQCQ@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Tested-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • A kernel WARNING in snd_rawmidi_transmit_ack() is triggered by
    syzkaller fuzzer:
    WARNING: CPU: 1 PID: 20739 at sound/core/rawmidi.c:1136
    Call Trace:
    [< inline >] __dump_stack lib/dump_stack.c:15
    [] dump_stack+0x6f/0xa2 lib/dump_stack.c:50
    [] warn_slowpath_common+0xd9/0x140 kernel/panic.c:482
    [] warn_slowpath_null+0x29/0x30 kernel/panic.c:515
    [] snd_rawmidi_transmit_ack+0x275/0x400 sound/core/rawmidi.c:1136
    [] snd_virmidi_output_trigger+0x4b1/0x5a0 sound/core/seq/seq_virmidi.c:163
    [< inline >] snd_rawmidi_output_trigger sound/core/rawmidi.c:150
    [] snd_rawmidi_kernel_write1+0x549/0x780 sound/core/rawmidi.c:1223
    [] snd_rawmidi_write+0x543/0xb30 sound/core/rawmidi.c:1273
    [] __vfs_write+0x113/0x480 fs/read_write.c:528
    [] vfs_write+0x167/0x4a0 fs/read_write.c:577
    [< inline >] SYSC_write fs/read_write.c:624
    [] SyS_write+0x111/0x220 fs/read_write.c:616
    [] entry_SYSCALL_64_fastpath+0x16/0x7a arch/x86/entry/entry_64.S:185

    Also a similar warning is found but in another path:
    Call Trace:
    [< inline >] __dump_stack lib/dump_stack.c:15
    [] dump_stack+0x6f/0xa2 lib/dump_stack.c:50
    [] warn_slowpath_common+0xd9/0x140 kernel/panic.c:482
    [] warn_slowpath_null+0x29/0x30 kernel/panic.c:515
    [] rawmidi_transmit_ack+0x24a/0x3b0 sound/core/rawmidi.c:1133
    [] snd_rawmidi_transmit_ack+0x51/0x80 sound/core/rawmidi.c:1163
    [] snd_virmidi_output_trigger+0x2b6/0x570 sound/core/seq/seq_virmidi.c:185
    [< inline >] snd_rawmidi_output_trigger sound/core/rawmidi.c:150
    [] snd_rawmidi_kernel_write1+0x4bb/0x760 sound/core/rawmidi.c:1252
    [] snd_rawmidi_write+0x543/0xb30 sound/core/rawmidi.c:1302
    [] __vfs_write+0x113/0x480 fs/read_write.c:528
    [] vfs_write+0x167/0x4a0 fs/read_write.c:577
    [< inline >] SYSC_write fs/read_write.c:624
    [] SyS_write+0x111/0x220 fs/read_write.c:616
    [] entry_SYSCALL_64_fastpath+0x16/0x7a arch/x86/entry/entry_64.S:185

    In the former case, the reason is that virmidi has an open code
    calling snd_rawmidi_transmit_ack() with the value calculated outside
    the spinlock. We may use snd_rawmidi_transmit() in a loop just for
    consuming the input data, but even there, there is a race between
    snd_rawmidi_transmit_peek() and snd_rawmidi_tranmit_ack().

    Similarly in the latter case, it calls snd_rawmidi_transmit_peek() and
    snd_rawmidi_tranmit_ack() separately without protection, so they are
    racy as well.

    The patch tries to address these issues by the following ways:
    - Introduce the unlocked versions of snd_rawmidi_transmit_peek() and
    snd_rawmidi_transmit_ack() to be called inside the explicit lock.
    - Rewrite snd_rawmidi_transmit() to be race-free (the former case).
    - Make the split calls (the latter case) protected in the rawmidi spin
    lock.

    BugLink: http://lkml.kernel.org/r/CACT4Y+YPq1+cYLkadwjWa5XjzF1_Vki1eHnVn-Lm0hzhSpu5PA@mail.gmail.com
    BugLink: http://lkml.kernel.org/r/CACT4Y+acG4iyphdOZx47Nyq_VHGbpJQK-6xNpiqUjaZYqsXOGw@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Tested-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Mac Mini 7,1 model with CS4208 codec reports the headphone jack
    detection wrongly in an inverted way. Moreover, the advertised pins
    for the audio input and SPDIF output have actually no jack detection.

    This patch addresses these issues. The inv_jack_detect flag is set
    for fixing the headphone jack detection, and the pin configs for audio
    input and SPDIF output are marked as non-detectable.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105161
    Report-and-tested-by: moosotc@gmail.com
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Support headset mode for ALC225 platforms.

    Signed-off-by: Kailang Yang
    Cc: # v4.4+
    Signed-off-by: Takashi Iwai

    Kailang Yang
     
  • Dell create new platform with ALC298 codec.
    This patch will enable headset mode for ALC225/ALC3253 platform.

    Signed-off-by: Kailang Yang
    Cc: # v4.4+
    Signed-off-by: Takashi Iwai

    Kailang Yang
     
  • Add new support for ALC225, yet another variant of ALC298 codec.

    Signed-off-by: Kailang Yang
    Cc: # 4.4+
    Signed-off-by: Takashi Iwai

    Kailang Yang
     
  • ALSA timer core framework has no sync point at stopping because it's
    called inside the spinlock. Thus we need a sync point at close for
    avoiding the stray timer task. This is simply done by implementing
    the close callback just calling del_timer_sync(). (It's harmless to
    call it unconditionally, as the core timer itself cares of the already
    deleted timer instance.)

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

01 Feb, 2016

5 commits

  • Although ALSA timer code got hardening for races, it still causes
    use-after-free error. This is however rather a corrupted linked list,
    not actually the concurrent accesses. Namely, when timer start is
    triggered twice, list_add_tail() is called twice, too. This ends
    up with the link corruption and triggers KASAN error.

    The simplest fix would be replacing list_add_tail() with
    list_move_tail(), but fundamentally it's the problem that we don't
    check the double start/stop correctly. So, the right fix here is to
    add the proper checks to snd_timer_start() and snd_timer_stop() (and
    their variants).

    BugLink: http://lkml.kernel.org/r/CACT4Y+ZyPRoMQjmawbvmCEDrkBD2BQuH7R09=eOkf5ESK8kJAw@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • ALSA sequencer may open/close and control ALSA timer instance
    dynamically either via sequencer events or direct ioctls. These are
    done mostly asynchronously, and it may call still some timer action
    like snd_timer_start() while another is calling snd_timer_close().
    Since the instance gets removed by snd_timer_close(), it may lead to
    a use-after-free.

    This patch tries to address such a race by protecting each
    snd_timer_*() call via the existing spinlock and also by avoiding the
    access to timer during close call.

    BugLink: http://lkml.kernel.org/r/CACT4Y+Z6RzW5MBr-HUdV-8zwg71WQfKTdPpYGvOeS7v4cyurNQ@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • There are potential deadlocks in PCM OSS emulation code while
    accessing read/write and mmap concurrently. This comes from the
    infamous mmap_sem usage in copy_from/to_user(). Namely,

    snd_pcm_oss_write() ->
    &runtime->oss.params_lock ->
    copy_to_user() ->
    &mm->mmap_sem
    mmap() ->
    &mm->mmap_sem ->
    snd_pcm_oss_mmap() ->
    &runtime->oss.params_lock

    Since we can't avoid taking params_lock from mmap code path, use
    trylock variant and aborts with -EAGAIN as a workaround of this AB/BA
    deadlock.

    BugLink: http://lkml.kernel.org/r/CACT4Y+bVrBKDG0G2_AcUgUQa+X91VKTeS4v+wN7BSHwHtqn3kQ@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • NULL user-space buffer can be passed even in a normal path, thus it's
    not good to spew a kernel warning with stack trace at each time.
    Just drop snd_BUG_ON() macro usage there.

    BugLink: http://lkml.kernel.org/r/CACT4Y+YfVJ3L+q0i-4vyQVyyPD7V=OMX0PWPi29x9Bo3QaBLdw@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The virmidi driver has an open race at closing its assigned rawmidi
    device, and this may lead to use-after-free in
    snd_seq_deliver_single_event().

    Plug the hole by properly protecting the linked list deletion and
    calling in the right order in snd_virmidi_input_close().

    BugLink: http://lkml.kernel.org/r/CACT4Y+Zd66+w12fNN85-425cVQT=K23kWbhnCEcMB8s3us-Frw@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Tested-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

30 Jan, 2016

2 commits


29 Jan, 2016

4 commits


28 Jan, 2016

2 commits

  • ALSA dummy driver can switch the timer backend between system timer
    and hrtimer via its hrtimer module option. This can be also switched
    dynamically via sysfs, but it may lead to a memory corruption when
    switching is done while a PCM stream is running; the stream instance
    for the newly switched timer method tries to access the memory that
    was allocated by another timer method although the sizes differ.

    As the simplest fix, this patch just disables the switch via sysfs by
    dropping the writable bit.

    BugLink: http://lkml.kernel.org/r/CACT4Y+ZGEeEBntHW5WHn2GoeE0G_kRrCmUh6=dWyy-wfzvuJLg@mail.gmail.com
    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Fix spelling and typos for SND_PCM_TIMER.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Takashi Iwai

    Randy Dunlap
     

27 Jan, 2016

1 commit

  • Since the build of PCM timer may be disabled via Kconfig now, each
    driver that provides a timer interface needs to set CONFIG_SND_TIMER
    explicitly. Otherwise it may get a build error due to missing
    symbol.

    Fixes: 90bbaf66ee7b ('ALSA: timer: add config item to export PCM timer disabling for expert')
    Reported-by: kbuild test robot
    Cc: # v4.4+
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

26 Jan, 2016

3 commits

  • The return type "unsigned int" was used by the get_formation_index function
    despite of the aspect that it will eventually return a negative error code.
    So, change to signed int and get index by reference in the parameters.

    Done with the help of Coccinelle.

    [Fix the missing braces suggested by Julia Lawall -- tiwai]

    Signed-off-by: Lucas Tanure
    Reviewed-by: Takashi Sakamoto
    Tested-by: Takashi Sakamoto
    Cc:
    Signed-off-by: Takashi Iwai

    Lucas Tanure
     
  • TEAC UD-501/UD-503/NT-503 fail to switch properly between different
    rate/format. Similar to 'Playback Design', this patch corrects the
    invalid clock source error for TEAC products and avoids complete
    freeze of the usb interface of 503 series.

    Signed-off-by: Guillaume Fougnies
    Cc:
    Signed-off-by: Takashi Iwai

    Guillaume Fougnies
     
  • Some architectures like PowerPC can handle the maximum struct size in
    an ioctl only up to 13 bits, and struct snd_compr_codec_caps used by
    SNDRV_COMPRESS_GET_CODEC_CAPS ioctl overflows this limit. This
    problem was revealed recently by a powerpc change, as it's now treated
    as a fatal build error.

    This patch is a stop-gap for that: for architectures with less than 14
    bit ioctl struct size, get rid of the handling of the relevant ioctl.
    We should provide an alternative equivalent ioctl code later, but for
    now just paper over it. Luckily, the compress API hasn't been used on
    such architectures, so the impact must be effectively zero.

    Reviewed-by: Mark Brown
    Acked-by: Sudip Mukherjee
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

25 Jan, 2016

2 commits


23 Jan, 2016

1 commit

  • Pull sound fixes from Takashi Iwai:
    "Here are lots of small fixes that have been collected since the
    previous pull. This time, not only trivial ones but fixes for some
    serious bugs are included:

    - Fix for CPU lockups by snd-hrtimer accesses
    - Fix for unsafe disconnection handling in ALSA timer code
    - Fix for Oops due to race at HD-audio module removal
    - Fixes for possible memory corruption via 32bit PCM and sequencer
    compat ioctls
    - Fix for regression in HD-audio generic model handling
    - Suppress kernel warnings for invalid TLV ioctls that may flood up
    - Fix the missing SSC clock handling for at73c213
    - A pin fixup for ASUS N550JX"

    * tag 'sound-fix-4.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: timer: Introduce disconnect op to snd_timer_instance
    ALSA: timer: Handle disconnection more safely
    ALSA: hda - Flush the pending probe work at remove
    ALSA: hda - Fix missing module loading with model=generic option
    ALSA: hda - Degrade i915 binding failure message
    ALSA: at73c213: manage SSC clock
    ALSA: control: Avoid kernel warnings from tlv ioctl with numid 0
    ALSA: seq: Fix snd_seq_call_port_info_ioctl in compat mode
    ALSA: pcm: Fix snd_pcm_hw_params struct copy in compat mode
    ALSA: hrtimer: Fix stall by hrtimer_cancel()
    ALSA: hda - Fix bass pin fixup for ASUS N550JX

    Linus Torvalds
     

22 Jan, 2016

2 commits

  • Instead of the previous ugly hack, introduce a new op, disconnect, to
    snd_timer_instance object for handling the wake up of pending tasks
    more cleanly.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109431
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Currently ALSA timer device doesn't take the disconnection into
    account very well; it merely unlinks the timer device at disconnection
    callback but does nothing else. Because of this, when an application
    accessing the timer device is disconnected, it may release the
    resource before actually closed. In most cases, it results in a
    warning message indicating a leftover timer instance like:
    ALSA: timer xxxx is busy?
    But basically this is an open race.

    This patch tries to address it. The strategy is like other ALSA
    devices: namely,
    - Manage card's refcount at each open/close
    - Wake up the pending tasks at disconnection
    - Check the shutdown flag appropriately at each possible call

    Note that this patch has one ugly hack to handle the wakeup of pending
    tasks. It'd be cleaner to introduce a new disconnect op to
    snd_timer_instance ops. But since it would lead to internal ABI
    breakage and it eventually increase my own work when backporting to
    stable kernels, I took a different path to implement locally in
    timer.c. A cleanup patch will follow at next for 4.5 kernel.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109431
    Cc: # v3.15+
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

21 Jan, 2016

2 commits

  • Pull ARM SoC multiplatform code updates from Arnd Bergmann:
    "This branch is the culmination of 5 years of effort to bring the ARMv6
    and ARMv7 platforms together such that they can all be enabled and
    boot the same kernel. It has been a tremendous amount of cleanup and
    refactoring by a huge number of people, and creation of several new
    (and major) subsystems to better abstract out all the platform details
    in an appropriate manner.

    The bulk of this branch is a large patchset from Arnd that brings
    several of the more minor and older platforms we have closer to
    multiplatform support. Among these are MMP, S3C64xx, Orion5x, mv78xx0
    and realview Much of this is moving around header files from old mach
    directories, but there are also some cleanup patches of debug_ll
    (lowlevel debug per-platform options) and other parts.

    Linus Walleij also has some patchs to clean up the older ARM Realview
    platforms by finally introducing DT support, and Rob Herring has some
    for ARM Versatile which is now DT-only. Both of these platforms are
    now multiplatform.

    Finally, a couple of patches from Russell for Dove PMU, and a fix from
    Valentin Rothberg for Exynos ADC, which were rebased on top of the
    series to avoid conflicts"

    * tag 'armsoc-multiplatform' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (75 commits)
    ARM: realview: don't select SMP_ON_UP for UP builds
    ARM: s3c: simplify s3c_irqwake_{e,}intallow definition
    ARM: s3c64xx: fix pm-debug compilation
    iio: exynos-adc: fix irqf_oneshot.cocci warnings
    ARM: realview: build realview-dt SMP support only when used
    ARM: realview: select apropriate targets
    ARM: realview: clean up header files
    ARM: realview: make all header files local
    ARM: no longer make CPU targets visible separately
    ARM: integrator: use explicit core module options
    ARM: realview: enable multiplatform
    ARM: make default platform work for NOMMU
    ARM: debug-ll: move DEBUG_LL_UART_EFM32 to correct Kconfig location
    ARM: defconfig: use correct debug_ll settings
    ARM: versatile: convert to multi-platform
    ARM: versatile: merge mach code into a single file
    ARM: versatile: switch to DT only booting and remove legacy code
    ARM: versatile: add DT based PCI detection
    ARM: pxa: mark ezx structures as __maybe_unused
    ARM: pxa: mark raumfeld init functions as __maybe_unused
    ...

    Linus Torvalds
     
  • As HD-audio driver does deferred probe internally via workqueue, the
    driver might go into the mixed state doing both probe and remove when
    the module gets unloaded during the probe work. This eventually
    triggers an Oops, unsurprisingly.

    For avoiding this race, we just need to flush the pending probe work
    explicitly before actually starting the resource release.

    Bugzilla: https://bugzilla.opensuse.org/show_bug.cgi?id=960710
    Cc: # v3.17+
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

20 Jan, 2016

3 commits

  • When the generic codec driver is specified via model option or such,
    the hda driver doesn't try to load the generic driver module but still
    loads the codec-specific driver, and this ends up with the binding
    failure.

    This patch fixes it by moving the generic module request in the common
    helper code.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=111021
    Cc: # v4.4+
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Currently HD-audio driver on Intel Skylake or Broxteon gives an error
    message when binding with i915 audio component fails. However, this
    isn't any serious error on a system without Intel graphics. Indeed
    there are such systems, where a third-party codec (e.g. Creative) is
    put on the mobo while using other discrete GPU (e.g. Nvidia).
    Printing a kernel "error" message is overreaction in such a case.

    This patch downgrades the print level for that message. For systems
    that mandate the i915 binding (e.g. Haswell or Broadwell HDMI/DP),
    another kernel error message is shown in addition to make clear what
    went wrong.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=111021
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Since commit 49af54ff0fc7 ("misc: atmel-ssc: prepare clock only when
    request") the SSC driver expects clients to manage the SSC clock.
    This updates the at73c213 driver to enable the SSC clock whenever it is
    needed.

    Signed-off-by: Mans Rullgard
    Signed-off-by: Takashi Iwai

    Mans Rullgard
     

18 Jan, 2016

3 commits

  • When a TLV ioctl with numid zero is handled, the driver may spew a
    kernel warning with a stack trace at each call. The check was
    intended obviously only for a kernel driver, but not for a user
    interaction. Let's fix it.

    This was spotted by syzkaller fuzzer.

    Reported-by: Dmitry Vyukov
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • This reverts one hunk of
    commit ef44a1ec6eee ("ALSA: sound/core: use memdup_user()"), which
    replaced a number of kmalloc followed by memcpy with memdup calls.

    In this case, we are copying from a struct snd_seq_port_info32 to a
    struct snd_seq_port_info, but the latter is 4 bytes longer than the
    32-bit version, so we need to separate kmalloc and copy calls.

    Fixes: ef44a1ec6eee ('ALSA: sound/core: use memdup_user()')
    Signed-off-by: Nicolas Boichat
    Cc:
    Signed-off-by: Takashi Iwai

    Nicolas Boichat
     
  • This reverts one hunk of
    commit ef44a1ec6eee ("ALSA: sound/core: use memdup_user()"), which
    replaced a number of kmalloc followed by memcpy with memdup calls.

    In this case, we are copying from a struct snd_pcm_hw_params32 to
    a struct snd_pcm_hw_params, but the latter is 4 bytes longer than
    the 32-bit version, so we need to separate kmalloc and copy calls.

    This actually leads to an out-of-bounds memory access later on
    in sound/soc/soc-pcm.c:soc_pcm_hw_params() (detected using KASan).

    Fixes: ef44a1ec6eee ('ALSA: sound/core: use memdup_user()')
    Signed-off-by: Nicolas Boichat
    Cc:
    Signed-off-by: Takashi Iwai

    Nicolas Boichat