projects
/
linux-2.6-microblaze.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9a97857
)
ALSA: firewire-motu: add bounds check in put_user loop for DSP events
author
Junrui Luo
<moonafterrain@outlook.com>
Tue, 9 Dec 2025 05:16:41 +0000
(13:16 +0800)
committer
Takashi Iwai
<tiwai@suse.de>
Tue, 9 Dec 2025 07:08:02 +0000
(08:08 +0100)
In the DSP event handling code, a put_user() loop copies event data.
When the user buffer size is not aligned to 4 bytes, it could overwrite
beyond the buffer boundary.
Fix by adding a bounds check before put_user().
Suggested-by: Takashi Iwai <tiwai@suse.de>
Fixes:
634ec0b2906e
("ALSA: firewire-motu: notify event for parameter change in register DSP model")
Signed-off-by: Junrui Luo <moonafterrain@outlook.com>
Link:
https://patch.msgid.link/SYBPR01MB788112C72AF8A1C8C448B4B8AFA3A@SYBPR01MB7881.ausprd01.prod.outlook.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/motu/motu-hwdep.c
patch
|
blob
|
history
diff --git
a/sound/firewire/motu/motu-hwdep.c
b/sound/firewire/motu/motu-hwdep.c
index
6675b23
..
89dc436
100644
(file)
--- a/
sound/firewire/motu/motu-hwdep.c
+++ b/
sound/firewire/motu/motu-hwdep.c
@@
-75,7
+75,7
@@
static long hwdep_read(struct snd_hwdep *hwdep, char __user *buf, long count,
while (consumed < count &&
snd_motu_register_dsp_message_parser_copy_event(motu, &ev)) {
ptr = (u32 __user *)(buf + consumed);
- if (put_user(ev, ptr))
+ if (
consumed + sizeof(ev) > count ||
put_user(ev, ptr))
return -EFAULT;
consumed += sizeof(ev);
}