1. 24 4月, 2015 2 次提交
  2. 11 4月, 2015 1 次提交
  3. 11 3月, 2015 1 次提交
  4. 10 3月, 2015 2 次提交
  5. 12 2月, 2015 7 次提交
  6. 03 2月, 2015 1 次提交
    • T
      ALSA: Simplify snd_device_register() variants · 40a4b263
      Takashi Iwai 提交于
      Now that all callers have been replaced with
      snd_device_register_for_dev(), let's drop the obsolete device
      registration code and concentrate only on the code handling struct
      device directly.  That said,
      
      - remove the old snd_device_register(),
      - rename snd_device_register_for_dev() with snd_device_register(),
      - drop superfluous arguments from snd_device_register(),
      - change snd_unregister_device() to pass the device pointer directly
      Reviewed-by: NJaroslav Kysela <perex@perex.cz>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      40a4b263
  7. 02 2月, 2015 1 次提交
  8. 26 1月, 2015 4 次提交
  9. 04 1月, 2015 1 次提交
  10. 22 11月, 2014 1 次提交
  11. 19 10月, 2014 2 次提交
    • T
      Subject: ALSA: seq: Remove autoload locks in driver registration · d5129f33
      Takashi Iwai 提交于
      Since we're calling request_module() asynchronously now, we can get
      rid of the autoload lock in snd_seq_device_register_driver(), as well
      as in the snd-seq driver registration itself.  This enables the
      automatic loading of dependent sequencer modules, such as
      snd-seq-virmidi from snd-emu10k1-synth.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d5129f33
    • T
      ALSA: seq: bind seq driver automatically · 68ab6108
      Takashi Iwai 提交于
      Currently the sequencer module binding is performed independently from
      the card module itself.  The reason behind it is to keep the sequencer
      stuff optional and allow the system running without it (e.g. for using
      PCM or rawmidi only).  This works in most cases, but a remaining
      problem is that the binding isn't done automatically when a new driver
      module is probed.  Typically this becomes visible when a hotplug
      driver like usb audio is used.
      
      This patch tries to address this and other potential issues.  First,
      the seq-binder (seq_device.c) tries to load a missing driver module at
      creating a new device object.  This is done asynchronously in a workq
      for avoiding the deadlock (modprobe call in module init path).
      
      This action, however, should be enabled only when the sequencer stuff
      was already initialized, i.e. snd-seq module was already loaded.  For
      that, a new function, snd_seq_autoload_init() is introduced here; this
      clears the blocking of autoloading, and also tries to load all pending
      driver modules.
      Reported-by: NAdam Goode <agoode@chromium.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      68ab6108
  12. 15 10月, 2014 1 次提交
  13. 23 6月, 2014 1 次提交
  14. 04 6月, 2014 2 次提交
    • A
      ALSA: seq: Continue broadcasting events to ports if one of them fails · 27423257
      Adam Goode 提交于
      Sometimes PORT_EXIT messages are lost when a process is exiting.
      This happens if you subscribe to the announce port with client A,
      then subscribe to the announce port with client B, then kill client A.
      Client B will not see the PORT_EXIT message because client A's port is
      closing and is earlier in the announce port subscription list. The
      for each loop will try to send the announcement to client A and fail,
      then will stop trying to broadcast to other ports. Killing B works fine
      since the announcement will already have gone to A. The CLIENT_EXIT
      message does not get lost.
      
      How to reproduce problem:
      
      *** termA
      $ aseqdump -p 0:1
        0:1   Port subscribed            0:1 -> 128:0
      
      *** termB
      $ aseqdump -p 0:1
      
      *** termA
        0:1   Client start               client 129
        0:1   Port start                 129:0
        0:1   Port subscribed            0:1 -> 129:0
      
      *** termB
        0:1   Port subscribed            0:1 -> 129:0
      
      *** termA
      ^C
      
      *** termB
        0:1   Client exit                client 128
         <--- expected Port exit as well (before client exit)
      Signed-off-by: NAdam Goode <agoode@google.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      27423257
    • A
      ALSA: seq: correctly detect input buffer overflow · 21fd3e95
      Adam Goode 提交于
      snd_seq_event_dup returns -ENOMEM in some buffer-full conditions,
      but usually returns -EAGAIN. Make -EAGAIN trigger the overflow
      condition in snd_seq_fifo_event_in so that the fifo is cleared
      and -ENOSPC is returned to userspace as stated in the alsa-lib docs.
      Signed-off-by: NAdam Goode <agoode@google.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      21fd3e95
  15. 28 4月, 2014 1 次提交
  16. 14 2月, 2014 4 次提交
  17. 12 2月, 2014 1 次提交
  18. 17 7月, 2013 1 次提交
    • T
      ALSA: seq-oss: Initialize MIDI clients asynchronously · 256ca9c3
      Takashi Iwai 提交于
      We've got bug reports that the module loading stuck on Debian system
      with 3.10 kernel.  The debugging session revealed that the initial
      registration of OSS sequencer clients stuck at module loading time,
      which involves again with request_module() at the init phase.  This is
      triggered only by special --install stuff Debian is using, but it's
      still not good to have such loops.
      
      As a workaround, call the registration part asynchronously.  This is a
      better approach irrespective of the hang fix, in anyway.
      Reported-and-tested-by: NPhilipp Matthias Hahn <pmhahn@pmhahn.de>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      256ca9c3
  19. 11 3月, 2013 1 次提交
    • T
      ALSA: seq: Fix missing error handling in snd_seq_timer_open() · 66efdc71
      Takashi Iwai 提交于
      snd_seq_timer_open() didn't catch the whole error path but let through
      if the timer id is a slave.  This may lead to Oops by accessing the
      uninitialized pointer.
      
       BUG: unable to handle kernel NULL pointer dereference at 00000000000002ae
       IP: [<ffffffff819b3477>] snd_seq_timer_open+0xe7/0x130
       PGD 785cd067 PUD 76964067 PMD 0
       Oops: 0002 [#4] SMP
       CPU 0
       Pid: 4288, comm: trinity-child7 Tainted: G      D W 3.9.0-rc1+ #100 Bochs Bochs
       RIP: 0010:[<ffffffff819b3477>]  [<ffffffff819b3477>] snd_seq_timer_open+0xe7/0x130
       RSP: 0018:ffff88006ece7d38  EFLAGS: 00010246
       RAX: 0000000000000286 RBX: ffff88007851b400 RCX: 0000000000000000
       RDX: 000000000000ffff RSI: ffff88006ece7d58 RDI: ffff88006ece7d38
       RBP: ffff88006ece7d98 R08: 000000000000000a R09: 000000000000fffe
       R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
       R13: ffff8800792c5400 R14: 0000000000e8f000 R15: 0000000000000007
       FS:  00007f7aaa650700(0000) GS:ffff88007f800000(0000) GS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 00000000000002ae CR3: 000000006efec000 CR4: 00000000000006f0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
       Process trinity-child7 (pid: 4288, threadinfo ffff88006ece6000, task ffff880076a8a290)
       Stack:
        0000000000000286 ffffffff828f2be0 ffff88006ece7d58 ffffffff810f354d
        65636e6575716573 2065756575712072 ffff8800792c0030 0000000000000000
        ffff88006ece7d98 ffff8800792c5400 ffff88007851b400 ffff8800792c5520
       Call Trace:
        [<ffffffff810f354d>] ? trace_hardirqs_on+0xd/0x10
        [<ffffffff819b17e9>] snd_seq_queue_timer_open+0x29/0x70
        [<ffffffff819ae01a>] snd_seq_ioctl_set_queue_timer+0xda/0x120
        [<ffffffff819acb9b>] snd_seq_do_ioctl+0x9b/0xd0
        [<ffffffff819acbe0>] snd_seq_ioctl+0x10/0x20
        [<ffffffff811b9542>] do_vfs_ioctl+0x522/0x570
        [<ffffffff8130a4b3>] ? file_has_perm+0x83/0xa0
        [<ffffffff810f354d>] ? trace_hardirqs_on+0xd/0x10
        [<ffffffff811b95ed>] sys_ioctl+0x5d/0xa0
        [<ffffffff813663fe>] ? trace_hardirqs_on_thunk+0x3a/0x3f
        [<ffffffff81faed69>] system_call_fastpath+0x16/0x1b
      Reported-and-tested-by: NTommi Rantala <tt.rantala@gmail.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      66efdc71
  20. 04 3月, 2013 1 次提交
    • D
      ALSA: seq: seq_oss_event: missing range checks · 85c50a58
      Dan Carpenter 提交于
      The "dev" variable could be out of bounds.  Calling
      snd_seq_oss_synth_is_valid() checks that it is is a valid device
      which has been opened.  We check this inside set_note_event() so
      this function can't succeed without a valid "dev".  But we need to
      do the check earlier to prevent invalid dereferences and memory
      corruption.
      
      One call tree where "dev" could be out of bounds is:
      -> snd_seq_oss_oob_user()
         -> snd_seq_oss_process_event()
            -> extended_event()
               -> note_on_event()
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      85c50a58
  21. 19 11月, 2012 1 次提交
  22. 20 8月, 2012 1 次提交
  23. 31 3月, 2012 1 次提交
  24. 12 3月, 2012 1 次提交
    • P
      device.h: cleanup users outside of linux/include (C files) · 51990e82
      Paul Gortmaker 提交于
      For files that are actively using linux/device.h, make sure
      that they call it out.  This will allow us to clean up some
      of the implicit uses of linux/device.h within include/*
      without introducing build regressions.
      
      Yes, this was created by "cheating" -- i.e. the headers were
      cleaned up, and then the fallout was found and fixed, and then
      the two commits were reordered.  This ensures we don't introduce
      build regressions into the git history.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      51990e82