1. 03 Jan, 2020 20 commits
  2. 01 Jan, 2020 2 commits
  3. 30 Dec, 2019 1 commit
  4. 28 Dec, 2019 1 commit
  5. 26 Dec, 2019 1 commit
  6. 24 Dec, 2019 1 commit
    • Takashi Sakamoto's avatar
      ALSA: ctl: allow TLV read operation for callback type of element in locked case · d61fe22c
      Takashi Sakamoto authored
      A design of ALSA control core allows applications to execute three
      operations for TLV feature; read, write and command. Furthermore, it
      allows driver developers to process the operations by two ways; allocated
      array or callback function. In the former, read operation is just allowed,
      thus developers uses the latter when device driver supports variety of
      models or the target model is expected to dynamically change information
      stored in TLV container.
      
      The core also allows applications to lock any element so that the other
      applications can't perform write operation to the element for element
      value and TLV information. When the element is locked, write and command
      operation for TLV information are prohibited as well as element value.
      Any read operation should be allowed in the case.
      
      At present, when an element has callback function for TLV information,
      TLV read operation returns EPERM if the element is locked. On the
      other hand, the read operation is success when an element has allocated
      array for TLV information. In both cases, read operation is success for
      element value expectedly.
      
      This commit fixes the bug. This change can be backported to v4.14
      kernel or later.
      Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Reviewed-by: default avatarJaroslav Kysela <perex@perex.cz>
      Link: https://lore.kernel.org/r/20191223093347.15279-1-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      d61fe22c
  7. 23 Dec, 2019 4 commits
  8. 20 Dec, 2019 6 commits
  9. 18 Dec, 2019 3 commits
  10. 17 Dec, 2019 1 commit
    • Takashi Iwai's avatar
      Merge tag 'y2038-alsa-v8-signed' of... · df1d6ea0
      Takashi Iwai authored
      Merge tag 'y2038-alsa-v8-signed' of git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground into for-next
      
      ALSA: Fix year 2038 issue for sound subsystem
      
      This is a series I worked on with Baolin in 2017 and 2018, but we
      never quite managed to finish up the last pieces. During the
      ALSA developer meetup at ELC-E 2018 in Edinburgh, a decision was
      made to go with this approach for keeping best compatibility
      with existing source code, and then I failed to follow up by
      resending the patches.
      
      Now I have patches for all remaining time_t uses in the kernel,
      so it's absolutely time to revisit them. I have done more
      review of the patches myself and found a couple of minor issues
      that I have fixed up, otherwise the series is still the same as
      before.
      
      Conceptually, the idea of these patches is:
      
      - 64-bit applications should see no changes at all, neither
        compile-time nor run-time.
      
      - 32-bit code compiled with a 64-bit time_t currently
        does not work with ALSA, and requires kernel changes and/or
        sound/asound.h changes
      
      - Most 32-bit code using these interfaces will work correctly
        on a modified kernel, with or without the uapi header changes.
      
      - 32-bit code using SNDRV_TIMER_IOCTL_TREAD requires the
        updated header file for 64-bit time_t support
      
      - 32-bit i386 user space with 64-bit time_t is broken for
        SNDRV_PCM_IOCTL_STATUS, SNDRV_RAWMIDI_IOCTL_STATUS and
        SNDRV_PCM_IOCTL_SYNC_PTR because of i386 alignment. This is also
        addressed by the updated uapi header.
      
      - PCM mmap is currently supported on native x86 kernels
        (both 32-bit and 64-bit) but not for compat mode. This series breaks
        the 32-bit native mmap support for 32-bit time_t, but instead allows
        it for 64-bit time_t on both native and compat kernels. This seems to
        be the best trade-off, as mmap support is optional already, and most
        32-bit code runs in compat mode anyway.
      
      - I've tried to avoid breaking compilation of 32-bit code
        as much as possible. Anything that does break however is likely code
        that is already broken on 64-bit time_t and needs source changes to
        fix them.
      
      [1] https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git y2038-alsa-v8
      [2] https://lore.kernel.org/lkml/CAK8P3a2Os66+iwQYf97qh05W2JP8rmWao8zmKoHiXqVHvyYAJA@mail.gmail.com/T/#m6519cb07cfda08adf1dedea6596bb98892b4d5dcSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      
      Changes since v7: (Arnd):
       - Fix a typo found by Ben Hutchings
      
      Changes since v6: (Arnd):
       - Add a patch to update the API versions
       - Hide a timespec reference in #ifndef __KERNEL__ to remove the
         last reference to time_t
       - Use a more readable way to do padding and describe it in the
         changelog
       - Rebase to linux-5.5-rc1, changing include/sound/soc-component.h
         and sound/drivers/aloop.c as needed.
      
      Changes since v5 (Arnd):
       - Rebased to linux-5.4-rc4
       - Updated to completely remove timespec and time_t references from alsa
       - found and fixed a few bugs
      
      Changes since v4 (Baolin):
       - Add patch 5 to change trigger_tstamp member of struct snd_pcm_runtime.
       - Add patch 8 to change internal timespec.
       - Add more explanation in commit message.
       - Use ktime_get_real_ts64() in patch 6.
       - Split common code out into a separate function in patch 6.
       - Fix tu->tread bug in patch 6 and remove #if __BITS_PER_LONG == 64 macro.
      
      Changes since v3:
       - Move struct snd_pcm_status32 to pcm.h file.
       - Modify comments and commit message.
       - Add new patch2 ~ patch6.
      
      Changes since v2:
       - Renamed all structures to make clear.
       - Remove CONFIG_X86_X32 macro and introduced new compat_snd_pcm_status64_x86_32.
      
      Changes since v1:
       - Add one macro for struct snd_pcm_status_32 which only active in 32bits kernel.
       - Convert pcm_compat.c to use struct snd_pcm_status_64.
       - Convert pcm_native.c to use struct snd_pcm_status_64.
      df1d6ea0