1. 25 9月, 2008 1 次提交
    • T
      ALSA: fix locking in snd_pcm_open*() and snd_rawmidi_open*() · 399ccdc1
      Takashi Iwai 提交于
      The PCM and rawmidi open callbacks have a lock against card->controls_list
      but it takes a wrong one, card->controls_rwsem, instead of a right one
      card->ctl_files_rwlock.  This patch fixes them.
      
      This change also fixes automatically the potential deadlocks due to
      mm->mmap_sem in munmap and copy_from/to_user, reported by Sitsofe
      Wheeler:
      
        A: snd_ctl_elem_user_tlv(): card->controls_rwsem => mm->mmap_sem
        B: snd_pcm_open(): card->open_mutex => card->controls_rwsem
        C: munmap: mm->mmap_sem => snd_pcm_release(): card->open_mutex
      
      The patch breaks the chain.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      399ccdc1
  2. 07 8月, 2008 2 次提交
    • L
      Revert "pcm_native.c: remove unused label" · 685d87f7
      Linus Torvalds 提交于
      This reverts commit 680db013.  The label
      is actually used, but hidden behind CONFIG_SND_DEBUG and the horrible
      snd_assert() macro.
      
      That macro could probably be improved to be along the lines of
      
      	#define snd_assert(expr, args...) do { if ((void)(expr),0) { args; } } while (0)
      
      or similar to make sure that we always both evaluate 'expr' and parse
      'args', but while gcc should optimize it all away, I'm too lazy to
      really verify that.  So I'll just admit defeat and will continue to live
      with the annoying warning.
      Noted-by: NRobert P. J. Day <rpjday@crashcourse.ca>
      Signed-off-by: Linus "Grr.." Torvalds
      685d87f7
    • L
      pcm_native.c: remove unused label · 680db013
      Linus Torvalds 提交于
      This fixes the warning
      
        sound/core/pcm_native.c: In function 'snd_pcm_fasync':
        sound/core/pcm_native.c:3262: warning: label 'out' defined but not used
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      680db013
  3. 05 8月, 2008 1 次提交
  4. 25 7月, 2008 1 次提交
    • A
      PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures · 27ac792c
      Andrea Righi 提交于
      On 32-bit architectures PAGE_ALIGN() truncates 64-bit values to the 32-bit
      boundary. For example:
      
      	u64 val = PAGE_ALIGN(size);
      
      always returns a value < 4GB even if size is greater than 4GB.
      
      The problem resides in PAGE_MASK definition (from include/asm-x86/page.h for
      example):
      
      #define PAGE_SHIFT      12
      #define PAGE_SIZE       (_AC(1,UL) << PAGE_SHIFT)
      #define PAGE_MASK       (~(PAGE_SIZE-1))
      ...
      #define PAGE_ALIGN(addr)       (((addr)+PAGE_SIZE-1)&PAGE_MASK)
      
      The "~" is performed on a 32-bit value, so everything in "and" with
      PAGE_MASK greater than 4GB will be truncated to the 32-bit boundary.
      Using the ALIGN() macro seems to be the right way, because it uses
      typeof(addr) for the mask.
      
      Also move the PAGE_ALIGN() definitions out of include/asm-*/page.h in
      include/linux/mm.h.
      
      See also lkml discussion: http://lkml.org/lkml/2008/6/11/237
      
      [akpm@linux-foundation.org: fix drivers/media/video/uvc/uvc_queue.c]
      [akpm@linux-foundation.org: fix v850]
      [akpm@linux-foundation.org: fix powerpc]
      [akpm@linux-foundation.org: fix arm]
      [akpm@linux-foundation.org: fix mips]
      [akpm@linux-foundation.org: fix drivers/media/video/pvrusb2/pvrusb2-dvb.c]
      [akpm@linux-foundation.org: fix drivers/mtd/maps/uclinux.c]
      [akpm@linux-foundation.org: fix powerpc]
      Signed-off-by: NAndrea Righi <righi.andrea@gmail.com>
      Cc: <linux-arch@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      27ac792c
  5. 22 7月, 2008 1 次提交
  6. 10 7月, 2008 1 次提交
  7. 03 7月, 2008 1 次提交
  8. 21 6月, 2008 1 次提交
  9. 13 6月, 2008 1 次提交
  10. 28 5月, 2008 1 次提交
    • T
      [ALSA] Improve the slots option handling · a93bbaa7
      Takashi Iwai 提交于
      Fix and improve the slots option handling.  The sound core tries to
      find the slot with the given module name first and assign if it's
      still available.  If all pre-given slots are unavailable, then try
      to find another free slot.
      
      Also, when a module name begins with '!', it means the negative match:
      the slot will be given for any modules but that one.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a93bbaa7
  11. 27 5月, 2008 2 次提交
  12. 21 5月, 2008 1 次提交
    • G
      SOUND: fix race in device_create · 5d99a8b8
      Greg Kroah-Hartman 提交于
      There is a race from when a device is created with device_create() and
      then the drvdata is set with a call to dev_set_drvdata() in which a
      sysfs file could be open, yet the drvdata will be NULL, causing all
      sorts of bad things to happen.
      
      This patch fixes the problem by using the new function,
      device_create_drvdata().
      
      Cc: Kay Sievers <kay.sievers@vrfy.org>
      Cc: Jaroslav Kysela <perex@perex.cz>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      5d99a8b8
  13. 19 5月, 2008 1 次提交
  14. 29 4月, 2008 2 次提交
  15. 24 4月, 2008 8 次提交
  16. 15 2月, 2008 1 次提交
  17. 06 2月, 2008 1 次提交
  18. 01 2月, 2008 13 次提交