diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2006-09-30 23:27:21 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-01 00:39:19 -0700 |
commit | 52978be636374c4bfb61220b37fa12f55a071c46 (patch) | |
tree | 36444be7bdbc0cdd99d903c0ad87316c93427517 /sound/usb/usbaudio.c | |
parent | 1a2f67b459bb7846d4a15924face63eb2683acc2 (diff) |
[PATCH] kmemdup: some users
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'sound/usb/usbaudio.c')
-rw-r--r-- | sound/usb/usbaudio.c | 11 |
1 files changed, 4 insertions, 7 deletions
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, void *buf = NULL; if (size > 0) { - buf = kmalloc(size, GFP_KERNEL); + buf = kmemdup(data, size, GFP_KERNEL); if (!buf) return -ENOMEM; - memcpy(buf, data, size); } err = usb_control_msg(dev, pipe, request, requesttype, value, index, buf, size, timeout); @@ -2846,12 +2845,11 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip, int stream, err; int *rate_table = NULL; - fp = kmalloc(sizeof(*fp), GFP_KERNEL); + fp = kmemdup(quirk->data, sizeof(*fp), GFP_KERNEL); if (! fp) { - snd_printk(KERN_ERR "cannot malloc\n"); + snd_printk(KERN_ERR "cannot memdup\n"); return -ENOMEM; } - memcpy(fp, quirk->data, sizeof(*fp)); if (fp->nr_rates > 0) { rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL); if (!rate_table) { @@ -3029,10 +3027,9 @@ static int create_ua1000_quirk(struct snd_usb_audio *chip, altsd->bNumEndpoints != 1) return -ENXIO; - fp = kmalloc(sizeof(*fp), GFP_KERNEL); + fp = kmemdup(&ua1000_format, sizeof(*fp), GFP_KERNEL); if (!fp) return -ENOMEM; - memcpy(fp, &ua1000_format, sizeof(*fp)); fp->channels = alts->extra[4]; fp->iface = altsd->bInterfaceNumber; |