1. 30 Oct, 2012 2 commits
    • Takashi Iwai's avatar
      ALSA: usb-audio: Fix races at disconnection · 978520b7
      Takashi Iwai authored
      Close some races at disconnection of a USB audio device by adding the
      chip->shutdown_mutex and chip->shutdown check at appropriate places.
      
      The spots to put bandaids are:
      - PCM prepare, hw_params and hw_free
      - where the usb device is accessed for communication or get speed, in
       mixer.c and others; the device speed is now cached in subs->speed
       instead of accessing to chip->dev
      
      The accesses in PCM open and close don't need the mutex protection
      because these are already handled in the core PCM disconnection code.
      
      The autosuspend/autoresume codes are still uncovered by this patch
      because of possible mutex deadlocks.  They'll be covered by the
      upcoming change to rwsem.
      
      Also the mixer codes are untouched, too.  These will be fixed in
      another patch, too.
      Reported-by: default avatarMatthieu CASTET <matthieu.castet@parrot.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      978520b7
    • Takashi Iwai's avatar
      ALSA: PCM: Fix some races at disconnection · 9b0573c0
      Takashi Iwai authored
      Fix races at PCM disconnection:
      - while a PCM device is being opened or closed
      - while the PCM state is being changed without lock in prepare,
        hw_params, hw_free ops
      Reported-by: default avatarMatthieu CASTET <matthieu.castet@parrot.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      9b0573c0
  2. 28 Oct, 2012 1 commit
  3. 27 Oct, 2012 2 commits
  4. 26 Oct, 2012 1 commit
  5. 25 Oct, 2012 2 commits
  6. 24 Oct, 2012 1 commit
  7. 22 Oct, 2012 1 commit
  8. 21 Oct, 2012 1 commit
    • Julia Lawall's avatar
      ALSA: sound/isa/opti9xx/miro.c: eliminate possible double free · edb66893
      Julia Lawall authored
      snd_miro_probe is a static function that is only called twice in the file
      that defines it.  At each call site, its argument is freed using
      snd_card_free.  Thus, there is no need for snd_miro_probe to call
      snd_card_free on its argument on any of its error exit paths.
      
      Because snd_card_free both reads the fields of its argument and kfrees its
      argments, the results of the second snd_card_free should be unpredictable.
      
      A simplified version of the semantic match that finds this problem is as
      follows: (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @r@
      identifier f,free,a;
      parameter list[n] ps;
      type T;
      expression e;
      @@
      
      f(ps,T a,...) {
        ... when any
            when != a = e
        if(...) { ... free(a); ... return ...; }
        ... when any
      }
      
      @@
      identifier r.f,r.free;
      expression x,a;
      expression list[r.n] xs;
      @@
      
      * x = f(xs,a,...);
        if (...) { ... free(a); ... return ...; }
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      edb66893
  9. 20 Oct, 2012 19 commits
  10. 19 Oct, 2012 10 commits