V4L/DVB (10521): em28xx-audio: Add lock for users
authorDouglas Schilling Landgraf <dougsland@redhat.com>
Sun, 8 Feb 2009 04:11:13 +0000 (01:11 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:42:44 +0000 (12:42 -0300)
Added lock for users count

Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/em28xx/em28xx-audio.c

index 8e9957dbdbec8434c6fc75c0309c775a511f7a6d..38436af2164b280a242ab5ffe86b742f9941aee6 100644 (file)
@@ -313,7 +313,9 @@ static int snd_em28xx_capture_open(struct snd_pcm_substream *substream)
                dprintk("changing alternate number to 7\n");
        }
 
+       mutex_lock(&dev->lock);
        dev->adev.users++;
+       mutex_unlock(&dev->lock);
 
        snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS);
        dev->adev.capture_pcm_substream = substream;
@@ -328,12 +330,12 @@ err:
 static int snd_em28xx_pcm_close(struct snd_pcm_substream *substream)
 {
        struct em28xx *dev = snd_pcm_substream_chip(substream);
-       dev->adev.users--;
 
        dprintk("closing device\n");
 
        dev->mute = 1;
        mutex_lock(&dev->lock);
+       dev->adev.users--;
        em28xx_audio_analog_set(dev);
        mutex_unlock(&dev->lock);