summaryrefslogtreecommitdiffstats
path: root/sound/isa
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2022-05-10 12:36:26 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-05-25 09:59:02 +0200
commit16ffc72b0b3feec6e411f24086b239550bff3915 (patch)
tree3977afb85042651c0f2e4eeb6a727699bf908fbe /sound/isa
parentc1d16757bdd27b25ed61e3ec393c7a6e4417ca91 (diff)
downloadlinux-stable-16ffc72b0b3feec6e411f24086b239550bff3915.tar.gz
linux-stable-16ffc72b0b3feec6e411f24086b239550bff3915.tar.bz2
linux-stable-16ffc72b0b3feec6e411f24086b239550bff3915.zip
ALSA: wavefront: Proper check of get_user() error
commit a34ae6c0660d3b96b0055f68ef74dc9478852245 upstream. The antient ISA wavefront driver reads its sample patch data (uploaded over an ioctl) via __get_user() with no good reason; likely just for some performance optimizations in the past. Let's change this to the standard get_user() and the error check for handling the fault case properly. Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20220510103626.16635-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound/isa')
-rw-r--r--sound/isa/wavefront/wavefront_synth.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/isa/wavefront/wavefront_synth.c b/sound/isa/wavefront/wavefront_synth.c
index 69cbc79fbb71..2aaaa6807174 100644
--- a/sound/isa/wavefront/wavefront_synth.c
+++ b/sound/isa/wavefront/wavefront_synth.c
@@ -1094,7 +1094,8 @@ wavefront_send_sample (snd_wavefront_t *dev,
if (dataptr < data_end) {
- __get_user (sample_short, dataptr);
+ if (get_user(sample_short, dataptr))
+ return -EFAULT;
dataptr += skip;
if (data_is_unsigned) { /* GUS ? */