Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
  1. Apr 12, 2022
  2. Apr 11, 2022
  3. Apr 08, 2022
    • Takashi Iwai's avatar
      ALSA: usb-audio: Increase max buffer size · fee2ec8c
      Takashi Iwai authored
      
      The current limit of max buffer size 1MB seems too small for modern
      devices with lots of channels and high sample rates.
      Let's make bigger, 4MB.
      
      Reviewed-by: default avatarJaroslav Kysela <perex@perex.cz>
      Link: https://lore.kernel.org/r/20220407212740.17920-1-tiwai@suse.de
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      fee2ec8c
    • Takashi Iwai's avatar
      ALSA: usb-audio: Cap upper limits of buffer/period bytes for implicit fb · 98c27add
      Takashi Iwai authored
      In the implicit feedback mode, some parameters are tied between both
      playback and capture streams.  One of the tied parameters is the
      period size, and this can be a problem if the device has different
      number of channels to both streams.  Assume that an application opens
      a playback stream that has an implicit feedback from a capture stream,
      and it allocates up to the max period and buffer size as much as
      possible.  When the capture device supports only more channels than
      the playback, the minimum period and buffer sizes become larger than
      the sizes the playback stream took.  That is, the minimum size will be
      over the max size the driver limits, and PCM core sees as if no
      available configuration is found, returning -EINVAL mercilessly.
      
      For avoiding this problem, we have to look through the counter part of
      audioformat list for each sync ep, and checks the channels.  If more
      channels are found there, we reduce the max period and buffer ...
      98c27add
  4. Apr 07, 2022
  5. Apr 05, 2022
  6. Mar 30, 2022
    • Takashi Iwai's avatar
      ALSA: pcm: Fix potential AB/BA lock with buffer_mutex and mmap_lock · bc55cfd5
      Takashi Iwai authored
      syzbot caught a potential deadlock between the PCM
      runtime->buffer_mutex and the mm->mmap_lock.  It was brought by the
      recent fix to cover the racy read/write and other ioctls, and in that
      commit, I overlooked a (hopefully only) corner case that may take the
      revert lock, namely, the OSS mmap.  The OSS mmap operation
      exceptionally allows to re-configure the parameters inside the OSS
      mmap syscall, where mm->mmap_mutex is already held.  Meanwhile, the
      copy_from/to_user calls at read/write operations also take the
      mm->mmap_lock internally, hence it may lead to a AB/BA deadlock.
      
      A similar problem was already seen in the past and we fixed it with a
      refcount (in commit b2483716
      
      ).  The former fix covered only the
      call paths with OSS read/write and OSS ioctls, while we need to cover
      the concurrent access via both ALSA and OSS APIs now.
      
      This patch addresses the problem above by replacing the buffer_mutex
      lock in the read/write operations with a refcount similar as we've
      used for OSS.  The new field, runtime->buffer_accessing, keeps the
      number of concurrent read/write operations.  Unlike the former
      buffer_mutex protection, this protects only around the
      copy_from/to_user() calls; the other codes are basically protected by
      the PCM stream lock.  The refcount can be a negative, meaning blocked
      by the ioctls.  If a negative value is seen, the read/write aborts
      with -EBUSY.  In the ioctl side, OTOH, they check this refcount, too,
      and set to a negative value for blocking unless it's already being
      accessed.
      
      Reported-by: default avatar <syzbot+6e5c88838328e99c7e1c@syzkaller.appspotmail.com>
      Fixes: dca947d4 ("ALSA: pcm: Fix races among concurrent read/write and buffer changes")
      Cc: <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/000000000000381a0d05db622a81@google.com
      Link: https://lore.kernel.org/r/20220330120903.4738-1-tiwai@suse.de
      
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      bc55cfd5