ALSA: sb: check get_user() return value

get_user() may fail, if so return -EFAULT.

[Fixed one missing place by tiwai]

Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Kulikov Vasiliy 2010-07-28 20:40:51 +04:00 committed by Takashi Iwai
parent 63818c448a
commit 5157cc8113

View File

@ -433,7 +433,8 @@ static int emu8k_transfer_block(struct snd_emu8000 *emu, int offset, unsigned sh
while (count > 0) { while (count > 0) {
unsigned short sval; unsigned short sval;
CHECK_SCHEDULER(); CHECK_SCHEDULER();
get_user(sval, buf); if (get_user(sval, buf))
return -EFAULT;
EMU8000_SMLD_WRITE(emu, sval); EMU8000_SMLD_WRITE(emu, sval);
buf++; buf++;
count--; count--;
@ -525,12 +526,14 @@ static int emu8k_pcm_copy(struct snd_pcm_substream *subs,
while (count-- > 0) { while (count-- > 0) {
unsigned short sval; unsigned short sval;
CHECK_SCHEDULER(); CHECK_SCHEDULER();
get_user(sval, buf); if (get_user(sval, buf))
return -EFAULT;
EMU8000_SMLD_WRITE(emu, sval); EMU8000_SMLD_WRITE(emu, sval);
buf++; buf++;
if (rec->voices > 1) { if (rec->voices > 1) {
CHECK_SCHEDULER(); CHECK_SCHEDULER();
get_user(sval, buf); if (get_user(sval, buf))
return -EFAULT;
EMU8000_SMRD_WRITE(emu, sval); EMU8000_SMRD_WRITE(emu, sval);
buf++; buf++;
} }