diff options
| author | Takashi Iwai <tiwai@suse.de> | 2013-07-11 11:56:56 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2013-07-15 12:12:49 -0400 |
| commit | cc7282b8d5abbd48c81d1465925d464d9e3eaa8f (patch) | |
| tree | cd5494655c0489f33537fe2a1710f0d525314303 | |
| parent | 60478295d6876619f8f47f6d1a5c25eaade69ee3 (diff) | |
ALSA: atiixp: Fix unlocked snd_pcm_stop() call
snd_pcm_stop() must be called in the PCM substream lock context.
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
| -rw-r--r-- | sound/pci/atiixp.c | 2 | ||||
| -rw-r--r-- | sound/pci/atiixp_modem.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/sound/pci/atiixp.c b/sound/pci/atiixp.c index fe4c61bdb8ba..f6dec3ea371f 100644 --- a/sound/pci/atiixp.c +++ b/sound/pci/atiixp.c | |||
| @@ -689,7 +689,9 @@ static void snd_atiixp_xrun_dma(struct atiixp *chip, struct atiixp_dma *dma) | |||
| 689 | if (! dma->substream || ! dma->running) | 689 | if (! dma->substream || ! dma->running) |
| 690 | return; | 690 | return; |
| 691 | snd_printdd("atiixp: XRUN detected (DMA %d)\n", dma->ops->type); | 691 | snd_printdd("atiixp: XRUN detected (DMA %d)\n", dma->ops->type); |
| 692 | snd_pcm_stream_lock(dma->substream); | ||
| 692 | snd_pcm_stop(dma->substream, SNDRV_PCM_STATE_XRUN); | 693 | snd_pcm_stop(dma->substream, SNDRV_PCM_STATE_XRUN); |
| 694 | snd_pcm_stream_unlock(dma->substream); | ||
| 693 | } | 695 | } |
| 694 | 696 | ||
| 695 | /* | 697 | /* |
diff --git a/sound/pci/atiixp_modem.c b/sound/pci/atiixp_modem.c index cf29b9a1d65d..289563ecb6dd 100644 --- a/sound/pci/atiixp_modem.c +++ b/sound/pci/atiixp_modem.c | |||
| @@ -638,7 +638,9 @@ static void snd_atiixp_xrun_dma(struct atiixp_modem *chip, | |||
| 638 | if (! dma->substream || ! dma->running) | 638 | if (! dma->substream || ! dma->running) |
| 639 | return; | 639 | return; |
| 640 | snd_printdd("atiixp-modem: XRUN detected (DMA %d)\n", dma->ops->type); | 640 | snd_printdd("atiixp-modem: XRUN detected (DMA %d)\n", dma->ops->type); |
| 641 | snd_pcm_stream_lock(dma->substream); | ||
| 641 | snd_pcm_stop(dma->substream, SNDRV_PCM_STATE_XRUN); | 642 | snd_pcm_stop(dma->substream, SNDRV_PCM_STATE_XRUN); |
| 643 | snd_pcm_stream_unlock(dma->substream); | ||
| 642 | } | 644 | } |
| 643 | 645 | ||
| 644 | /* | 646 | /* |
