ALSA: sb: check get_user() return value
authorKulikov Vasiliy <segooon@gmail.com>
Wed, 28 Jul 2010 16:40:51 +0000 (20:40 +0400)
committerTakashi Iwai <tiwai@suse.de>
Thu, 29 Jul 2010 10:24:22 +0000 (12:24 +0200)
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>
sound/isa/sb/emu8000_pcm.c

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