projects
/
GitHub
/
MotorolaMobilityLLC
/
kernel-slsi.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
bf91141
)
[ALSA] soc - fsl_ssi.c fix "BUG: scheduling while atomic"
author
Anton Vorontsov
<avorontsov@ru.mvista.com>
Fri, 9 May 2008 11:43:55 +0000
(13:43 +0200)
committer
Takashi Iwai
<tiwai@suse.de>
Tue, 13 May 2008 12:47:43 +0000
(14:47 +0200)
This patch fixes following bug caught with PREEMPT enabled:
root@b1:~# cat /dev/dsp > /dev/null
BUG: scheduling while atomic: cat/965/0x00000003
Call Trace:
[
df165ce0
] [
c0008e84
] show_stack+0x4c/0x1ac (unreliable)
[
df165d20
] [
c001c18c
] __schedule_bug+0x64/0x78
[
df165d30
] [
c02b3344
] schedule+0x2d8/0x334
[
df165d70
] [
c02b3674
] schedule_timeout+0x64/0xe4
[
df165db0
] [
c002c05c
] msleep+0x1c/0x34
[
df165dc0
] [
c01f2fe0
] fsl_ssi_trigger+0x130/0x144
[
df165dd0
] [
c01ece54
] soc_pcm_trigger+0x94/0xb8
[
df165df0
] [
c01da764
] snd_pcm_do_start+0x48/0x60
[
df165e00
] [
c01da630
] snd_pcm_action_single+0x4c/0xb4
[
df165e20
] [
c01e0f50
] snd_pcm_lib_read1+0x2a0/0x2d4
[
df165e70
] [
c01ec274
] snd_pcm_oss_read3+0xf0/0x13c
[
df165eb0
] [
c01ec2e4
] snd_pcm_oss_read2+0x24/0x4c
[
df165ec0
] [
c01ec4ac
] snd_pcm_oss_read+0x1a0/0x1f0
[
df165ef0
] [
c0076478
] vfs_read+0xb4/0x108
[
df165f10
] [
c00768cc
] sys_read+0x4c/0x90
[
df165f40
] [
c00117a4
] ret_from_syscall+0x0/0x38
Acked-by: Timur Tabi <timur@freescale.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/soc/fsl/fsl_ssi.c
patch
|
blob
|
blame
|
history
diff --git
a/sound/soc/fsl/fsl_ssi.c
b/sound/soc/fsl/fsl_ssi.c
index b2a11b0d2e4c3b9cb6eb17c1dee1ec1743aec48a..f588545698f3687f75941977b8e597791c964e9e 100644
(file)
--- a/
sound/soc/fsl/fsl_ssi.c
+++ b/
sound/soc/fsl/fsl_ssi.c
@@
-416,7
+416,7
@@
static int fsl_ssi_trigger(struct snd_pcm_substream *substream, int cmd)
* to put data into its FIFO. Without it, ALSA starts
* to complain about overruns.
*/
- m
sleep
(1);
+ m
delay
(1);
}
break;