diff options
Diffstat (limited to 'sound/usb/quirks.c')
| -rw-r--r-- | sound/usb/quirks.c | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 2e5bc734402..a3ddac0deff 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -137,12 +137,12 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip,  		return -ENOMEM;  	}  	if (fp->nr_rates > 0) { -		rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL); +		rate_table = kmemdup(fp->rate_table, +				     sizeof(int) * fp->nr_rates, GFP_KERNEL);  		if (!rate_table) {  			kfree(fp);  			return -ENOMEM;  		} -		memcpy(rate_table, fp->rate_table, sizeof(int) * fp->nr_rates);  		fp->rate_table = rate_table;  	} @@ -224,10 +224,9 @@ static int create_uaxx_quirk(struct snd_usb_audio *chip,  	if (altsd->bNumEndpoints != 1)  		return -ENXIO; -	fp = kmalloc(sizeof(*fp), GFP_KERNEL); +	fp = kmemdup(&ua_format, sizeof(*fp), GFP_KERNEL);  	if (!fp)  		return -ENOMEM; -	memcpy(fp, &ua_format, sizeof(*fp));  	fp->iface = altsd->bInterfaceNumber;  	fp->endpoint = get_endpoint(alts, 0)->bEndpointAddress;  |