diff options
author | Takashi Iwai <tiwai@suse.de> | 2008-01-28 23:53:41 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2008-01-31 17:30:20 +0100 |
commit | 4939c660341d1439b8c70c3e006e7fc182f5111e (patch) | |
tree | 53a58cd398fed99ca24ce1f243955a3e024ba6d9 /sound/core | |
parent | ce875f079efcfdcf693de89c7ab0ca7f71a9bdce (diff) | |
download | op-kernel-dev-4939c660341d1439b8c70c3e006e7fc182f5111e.zip op-kernel-dev-4939c660341d1439b8c70c3e006e7fc182f5111e.tar.gz |
[ALSA] Fix Oops with PCM OSS sync
The PCM OSS emulation can cause Oops at sync operation due to the wrong
data size calculation. Typically happening on Sparc64:
http://lkml.org/lkml/2008/1/24/426
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/core')
-rw-r--r-- | sound/core/oss/pcm_oss.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c index 092c2d8..4c601b1 100644 --- a/sound/core/oss/pcm_oss.c +++ b/sound/core/oss/pcm_oss.c @@ -1621,6 +1621,7 @@ static int snd_pcm_oss_sync(struct snd_pcm_oss_file *pcm_oss_file) snd_pcm_format_set_silence(runtime->format, runtime->oss.buffer, size1); + size1 /= runtime->channels; /* frames */ fs = snd_enter_user(); snd_pcm_lib_write(substream, (void __user *)runtime->oss.buffer, size1); snd_leave_user(fs); |