Skip to contentSkip to conversation

ALSA: sb: check get_user() return value

PATCH Applied Kulikov Vasiliy 2 participants 2 messages Jul 28, 2010 – Jul 29, 2010

Subsystems (2)

v1 of 2 Applied Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 7/10 ALSA: sb: check get_user() return value

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

---
 sound/isa/sb/emu8000_pcm.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
sound/isa/sb/emu8000_pcm.c +4 -2
index ccedbfe..ae6fa9f 100644
@@ -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,7 +526,8 @@ 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) {
Signature · 1 line
1.7.0.4
Applied
#1 lore raw

At Wed, 28 Jul 2010 20:40:51 +0400,

Quoted 4 lines · Kulikov Vasiliy

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

Thanks, applied this one (with one additional fix for get_user() there).

Takashi

Quoted 31 lines
---
 sound/isa/sb/emu8000_pcm.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)
sound/isa/sb/emu8000_pcm.c +4 -2
index ccedbfe..ae6fa9f 100644
@@ -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,7 +526,8 @@ 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) {
Signature · 1 line
1.7.0.4