1. 10 10月, 2011 1 次提交
  2. 09 10月, 2011 1 次提交
  3. 04 10月, 2011 1 次提交
    • D
      ALSA: oss-mixer - use strlcpy() instead strcpy() · f92766bc
      Dan Carpenter 提交于
      This is mostly a static checker fix more than anything else.  We're
      copying from a 64 char buffer into a 44 char buffer.
      
      The 64 character buffer is str[] in snd_mixer_oss_build_test_all().
      The call tree is:
      	snd_mixer_oss_build_test_all()
      	-> snd_mixer_oss_build_test()
      	   -> snd_mixer_oss_build_test().
      
      We never actually do fill str[] buffer all the way to 64 characters.
      The longest string is:
      	sprintf(str, "%s Playback Switch", ptr->name);
      ptr->name is a 32 character buffer so 32 plus 16 characters for
      " Playback Switch" still puts us over the 44 limit from "id.name".
      
      Most likely ptr->name never gets filled to the limit, but we can't
      really change the size of that buffer so lets just use strlcpy() here
      and be safe.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f92766bc
  4. 20 9月, 2011 1 次提交
  5. 15 9月, 2011 1 次提交
    • A
      ALSA: pcm - fix race condition in wait_for_avail() · 763437a9
      Arjan van de Ven 提交于
      wait_for_avail() in pcm_lib.c has a race in it (observed in practice by an
      Intel validation group).
      
      The function is supposed to return once space in the buffer has become
      available, or if some timeout happens.  The entity that creates space (irq
      handler of sound driver and some such) will do a wake up on a waitqueue
      that this function registers for.
      
      However there are two races in the existing code
      
      1) If space became available between the caller noticing there was no
         space and this function actually sleeping, the wakeup is missed and the
         timeout condition will happen instead
      
      2) If a wakeup happened but not sufficient space became available, the
         code will loop again and wait for more space.  However, if the second
         wake comes in prior to hitting the schedule_timeout_interruptible(), it
         will be missed, and potentially you'll wait out until the timeout
         happens.
      
      The fix consists of using more careful setting of the current state (so
      that if a wakeup happens in the main loop window, the schedule_timeout()
      falls through) and by checking for available space prior to going into the
      schedule_timeout() loop, but after being on the waitqueue and having the
      state set to interruptible.
      
      [tiwai: the following changes have been added to Arjan's original patch:
       - merged akpm's fix for waitqueue adding order into a single patch
       - reduction of duplicated code of avail check
      ]
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Cc: <stable@kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      763437a9
  6. 24 8月, 2011 2 次提交
  7. 08 8月, 2011 2 次提交
  8. 30 7月, 2011 1 次提交
  9. 28 7月, 2011 1 次提交
  10. 24 7月, 2011 2 次提交
  11. 12 7月, 2011 1 次提交
  12. 14 6月, 2011 1 次提交
  13. 10 6月, 2011 1 次提交
  14. 26 5月, 2011 2 次提交
  15. 19 5月, 2011 1 次提交
  16. 18 5月, 2011 1 次提交
    • B
      ALSA: sound, core, pcm_lib: xrun_log: log also in_interrupt · ec08b144
      Ben Gardiner 提交于
      When debugging pcm drivers I found the "period" or "hw" prefix printed
      by either XRUN_DEBUG_PERIODUPDATE or XRUN_DEBUG_PERIODUPDATE events,
      respectively to be very useful is observing the interplay between
      interrupt-context updates and syscall-context updates.
      
      Similarly, when debugging overruns with XRUN_DEBUG_LOG it is useful to
      see the context of the last 10 positions.
      
      Add an in_interrupt member to hwptr_log_entry which stores the value of
      the in_interrupt parameter of snd_pcm_update_hw_ptr0 when the log entry
      is created. Print a "[Q]" prefix when dumping the log entries if
      in_interrupt was true.
      Signed-off-by: NBen Gardiner <bengardiner@nanometrics.ca>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ec08b144
  17. 04 4月, 2011 1 次提交
  18. 02 4月, 2011 1 次提交
  19. 31 3月, 2011 1 次提交
  20. 26 3月, 2011 1 次提交
  21. 25 3月, 2011 1 次提交
    • B
      ALSA: vmalloc buffers should use normal mmap · 3674f19d
      Benjamin Herrenschmidt 提交于
      It's a big no-no to use pgprot_noncached() when mmap'ing such buffers
      into userspace since they are mapped cachable in kernel space.
      
      This can cause all sort of interesting things ranging from to garbled
      sound to lockups on various architectures. I've observed that usb-audio
      is broken on powerpc 4xx for example because of that.
      
      Also remove the now unused snd_pcm_lib_mmap_noncached(). It's
      an arch business to know when to use uncached mappings, there's
      already hacks for MIPS inside snd_pcm_default_mmap() and other
      archs are supposed to use dma_mmap_coherent().
      
      (See my separate patch that adds dma_mmap_coherent() to powerpc)
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      CC: <stable@kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3674f19d
  22. 22 3月, 2011 1 次提交
  23. 17 3月, 2011 1 次提交
  24. 11 3月, 2011 1 次提交
  25. 08 3月, 2011 2 次提交
    • C
      ALSA: control: clean up snd_ctl_hole_check() · 0e82e5fa
      Clemens Ladisch 提交于
      The return value of snd_ctl_hole_check() is used only to detect whether
      to continue the loop in snd_ctl_find_hole() or not, so we can simplify
      the code by changing this return type to a boolean.  Also rename this
      function to better show what it actually does.
      Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      0e82e5fa
    • C
      ALSA: control: fix numid conflict check for new controls · 7c733587
      Clemens Ladisch 提交于
      The purpose of the snd_ctl_hole_check() function is to find conflicts
      between the numerical IDs of the new control and those of any existing
      controls.  However, it would fail to detect an existing control whose
      count is smaller than the new control's count and whose interval of IDs
      is entirely contained in the interval of the new control's IDs.
      
      To fix this, use the correct formula to detect overlapping intervals,
      which happens to simplify the condition.
      
      This problem was not encountered so far because ALSA does not yet allow
      drivers to allocate specific control IDs.
      Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7c733587
  26. 27 2月, 2011 1 次提交
  27. 21 2月, 2011 1 次提交
  28. 15 2月, 2011 1 次提交
  29. 11 2月, 2011 2 次提交
  30. 10 1月, 2011 2 次提交
  31. 21 12月, 2010 1 次提交
  32. 30 11月, 2010 1 次提交
  33. 24 11月, 2010 1 次提交
    • K
      ALSA: support module on-demand loading for seq and timer · 03cfe6f5
      Kay Sievers 提交于
      If CONFIG_SND_DYNAMIC_MINORS is used, assign /dev/snd/seq and
      /dev/snd/timer the usual static minors, and export specific
      module aliases to generate udev module on-demand loading
      instructions:
      
        $ cat /lib/modules/2.6.33.4-smp/modules.devname
        # Device nodes to trigger on-demand module loading.
        microcode cpu/microcode c10:184
        fuse fuse c10:229
        ppp_generic ppp c108:0
        tun net/tun c10:200
        uinput uinput c10:223
        dm_mod mapper/control c10:236
        snd_timer snd/timer c116:33
        snd_seq snd/seq c116:1
      
      The last two lines instruct udev to create device nodes, even
      when the modules are not loaded at that time.
      
      As soon as userspace accesses any of these nodes, the in-kernel
      module-loader will load the module, and the device can be used.
      
      The header file minor calculation needed to be simplified to
      make __stringify() (supports only two indirections) in
      the MODULE_ALIAS macro work.
      
      This is part of systemd's effort to get rid of unconditional
      module load instructions and needless init scripts.
      
      Cc: Lennart Poettering <lennart@poettering.net>
      Signed-off-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      03cfe6f5