hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/sound/core/hwdep_compat.c
....@@ -1,21 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * 32bit -> 64bit ioctl wrapper for hwdep API
34 * Copyright (c) by Takashi Iwai <tiwai@suse.de>
4
- *
5
- * This program is free software; you can redistribute it and/or modify
6
- * it under the terms of the GNU General Public License as published by
7
- * the Free Software Foundation; either version 2 of the License, or
8
- * (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program; if not, write to the Free Software
17
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18
- *
195 */
206
217 /* This file is included from hwdep.c */
....@@ -33,26 +19,17 @@
3319 static int snd_hwdep_dsp_load_compat(struct snd_hwdep *hw,
3420 struct snd_hwdep_dsp_image32 __user *src)
3521 {
36
- struct snd_hwdep_dsp_image __user *dst;
22
+ struct snd_hwdep_dsp_image info = {};
3723 compat_caddr_t ptr;
38
- u32 val;
3924
40
- dst = compat_alloc_user_space(sizeof(*dst));
25
+ if (copy_from_user(&info, src, 4 + 64) ||
26
+ get_user(ptr, &src->image) ||
27
+ get_user(info.length, &src->length) ||
28
+ get_user(info.driver_data, &src->driver_data))
29
+ return -EFAULT;
30
+ info.image = compat_ptr(ptr);
4131
42
- /* index and name */
43
- if (copy_in_user(dst, src, 4 + 64))
44
- return -EFAULT;
45
- if (get_user(ptr, &src->image) ||
46
- put_user(compat_ptr(ptr), &dst->image))
47
- return -EFAULT;
48
- if (get_user(val, &src->length) ||
49
- put_user(val, &dst->length))
50
- return -EFAULT;
51
- if (get_user(val, &src->driver_data) ||
52
- put_user(val, &dst->driver_data))
53
- return -EFAULT;
54
-
55
- return snd_hwdep_dsp_load(hw, dst);
32
+ return snd_hwdep_dsp_load(hw, &info);
5633 }
5734
5835 enum {