aboutsummaryrefslogtreecommitdiffstats
path: root/sound/core/rawmidi.c
diff options
context:
space:
mode:
authorPeter Zijlstra <peterz@infradead.org>2021-10-07 00:40:17 +0200
committerPeter Zijlstra <peterz@infradead.org>2021-10-07 00:40:17 +0200
commitb08cadbd3b8721db738d9a00ef3ce3ed667e6d9c (patch)
tree1b44ef760764ea19f82fd80088135d23ab565d2d /sound/core/rawmidi.c
parentobjtool: Support pv_opsindirect calls for noinstr (diff)
parentobjtool: Remove redundant 'len' field from struct section (diff)
downloadlinux-dev-b08cadbd3b8721db738d9a00ef3ce3ed667e6d9c.tar.xz
linux-dev-b08cadbd3b8721db738d9a00ef3ce3ed667e6d9c.zip
Merge branch 'objtool/urgent'
Fixup conflicts. # Conflicts: # tools/objtool/check.c
Diffstat (limited to 'sound/core/rawmidi.c')
-rw-r--r--sound/core/rawmidi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/core/rawmidi.c b/sound/core/rawmidi.c
index 6c0a4a67ad2e..6f30231bdb88 100644
--- a/sound/core/rawmidi.c
+++ b/sound/core/rawmidi.c
@@ -873,12 +873,21 @@ static long snd_rawmidi_ioctl(struct file *file, unsigned int cmd, unsigned long
return -EINVAL;
}
}
+ case SNDRV_RAWMIDI_IOCTL_USER_PVERSION:
+ if (get_user(rfile->user_pversion, (unsigned int __user *)arg))
+ return -EFAULT;
+ return 0;
+
case SNDRV_RAWMIDI_IOCTL_PARAMS:
{
struct snd_rawmidi_params params;
if (copy_from_user(&params, argp, sizeof(struct snd_rawmidi_params)))
return -EFAULT;
+ if (rfile->user_pversion < SNDRV_PROTOCOL_VERSION(2, 0, 2)) {
+ params.mode = 0;
+ memset(params.reserved, 0, sizeof(params.reserved));
+ }
switch (params.stream) {
case SNDRV_RAWMIDI_STREAM_OUTPUT:
if (rfile->output == NULL)