aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/echoaudio/layla24_dsp.c4
-rw-r--r--sound/usb/usbaudio.c11
-rw-r--r--sound/usb/usbmidi.c3
3 files changed, 7 insertions, 11 deletions
diff --git a/sound/pci/echoaudio/layla24_dsp.c b/sound/pci/echoaudio/layla24_dsp.c
index 7ec5b63d0dce..97e42e115147 100644
--- a/sound/pci/echoaudio/layla24_dsp.c
+++ b/sound/pci/echoaudio/layla24_dsp.c
@@ -302,11 +302,11 @@ static int switch_asic(struct echoaudio *chip, const struct firmware *asic)
302 302
303 /* Check to see if this is already loaded */ 303 /* Check to see if this is already loaded */
304 if (asic != chip->asic_code) { 304 if (asic != chip->asic_code) {
305 monitors = kmalloc(MONITOR_ARRAY_SIZE, GFP_KERNEL); 305 monitors = kmemdup(chip->comm_page->monitors,
306 MONITOR_ARRAY_SIZE, GFP_KERNEL);
306 if (! monitors) 307 if (! monitors)
307 return -ENOMEM; 308 return -ENOMEM;
308 309
309 memcpy(monitors, chip->comm_page->monitors, MONITOR_ARRAY_SIZE);
310 memset(chip->comm_page->monitors, ECHOGAIN_MUTED, 310 memset(chip->comm_page->monitors, ECHOGAIN_MUTED,
311 MONITOR_ARRAY_SIZE); 311 MONITOR_ARRAY_SIZE);
312 312
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c
index 49248fa7aef4..a42acf6d7b68 100644
--- a/sound/usb/usbaudio.c
+++ b/sound/usb/usbaudio.c
@@ -2046,10 +2046,9 @@ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
2046 void *buf = NULL; 2046 void *buf = NULL;
2047 2047
2048 if (size > 0) { 2048 if (size > 0) {
2049 buf = kmalloc(size, GFP_KERNEL); 2049 buf = kmemdup(data, size, GFP_KERNEL);
2050 if (!buf) 2050 if (!buf)
2051 return -ENOMEM; 2051 return -ENOMEM;
2052 memcpy(buf, data, size);
2053 } 2052 }
2054 err = usb_control_msg(dev, pipe, request, requesttype, 2053 err = usb_control_msg(dev, pipe, request, requesttype,
2055 value, index, buf, size, timeout); 2054 value, index, buf, size, timeout);
@@ -2846,12 +2845,11 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip,
2846 int stream, err; 2845 int stream, err;
2847 int *rate_table = NULL; 2846 int *rate_table = NULL;
2848 2847
2849 fp = kmalloc(sizeof(*fp), GFP_KERNEL); 2848 fp = kmemdup(quirk->data, sizeof(*fp), GFP_KERNEL);
2850 if (! fp) { 2849 if (! fp) {
2851 snd_printk(KERN_ERR "cannot malloc\n"); 2850 snd_printk(KERN_ERR "cannot memdup\n");
2852 return -ENOMEM; 2851 return -ENOMEM;
2853 } 2852 }
2854 memcpy(fp, quirk->data, sizeof(*fp));
2855 if (fp->nr_rates > 0) { 2853 if (fp->nr_rates > 0) {
2856 rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL); 2854 rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL);
2857 if (!rate_table) { 2855 if (!rate_table) {
@@ -3029,10 +3027,9 @@ static int create_ua1000_quirk(struct snd_usb_audio *chip,
3029 altsd->bNumEndpoints != 1) 3027 altsd->bNumEndpoints != 1)
3030 return -ENXIO; 3028 return -ENXIO;
3031 3029
3032 fp = kmalloc(sizeof(*fp), GFP_KERNEL); 3030 fp = kmemdup(&ua1000_format, sizeof(*fp), GFP_KERNEL);
3033 if (!fp) 3031 if (!fp)
3034 return -ENOMEM; 3032 return -ENOMEM;
3035 memcpy(fp, &ua1000_format, sizeof(*fp));
3036 3033
3037 fp->channels = alts->extra[4]; 3034 fp->channels = alts->extra[4];
3038 fp->iface = altsd->bInterfaceNumber; 3035 fp->iface = altsd->bInterfaceNumber;
diff --git a/sound/usb/usbmidi.c b/sound/usb/usbmidi.c
index abe29dadd979..0dcf78adb99a 100644
--- a/sound/usb/usbmidi.c
+++ b/sound/usb/usbmidi.c
@@ -323,10 +323,9 @@ static int send_bulk_static_data(struct snd_usb_midi_out_endpoint* ep,
323 const void *data, int len) 323 const void *data, int len)
324{ 324{
325 int err; 325 int err;
326 void *buf = kmalloc(len, GFP_KERNEL); 326 void *buf = kmemdup(data, len, GFP_KERNEL);
327 if (!buf) 327 if (!buf)
328 return -ENOMEM; 328 return -ENOMEM;
329 memcpy(buf, data, len);
330 dump_urb("sending", buf, len); 329 dump_urb("sending", buf, len);
331 err = usb_bulk_msg(ep->umidi->chip->dev, ep->urb->pipe, buf, len, 330 err = usb_bulk_msg(ep->umidi->chip->dev, ep->urb->pipe, buf, len,
332 NULL, 250); 331 NULL, 250);