Commit 52978be6 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Linus Torvalds

[PATCH] kmemdup: some users

Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 1a2f67b4
...@@ -425,13 +425,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp, ...@@ -425,13 +425,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long esp,
tsk = current; tsk = current;
if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) { if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) {
p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr,
IO_BITMAP_BYTES, GFP_KERNEL);
if (!p->thread.io_bitmap_ptr) { if (!p->thread.io_bitmap_ptr) {
p->thread.io_bitmap_max = 0; p->thread.io_bitmap_max = 0;
return -ENOMEM; return -ENOMEM;
} }
memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr,
IO_BITMAP_BYTES);
set_tsk_thread_flag(p, TIF_IO_BITMAP); set_tsk_thread_flag(p, TIF_IO_BITMAP);
} }
......
...@@ -58,12 +58,10 @@ posix_acl_clone(const struct posix_acl *acl, gfp_t flags) ...@@ -58,12 +58,10 @@ posix_acl_clone(const struct posix_acl *acl, gfp_t flags)
if (acl) { if (acl) {
int size = sizeof(struct posix_acl) + acl->a_count * int size = sizeof(struct posix_acl) + acl->a_count *
sizeof(struct posix_acl_entry); sizeof(struct posix_acl_entry);
clone = kmalloc(size, flags); clone = kmemdup(acl, size, flags);
if (clone) { if (clone)
memcpy(clone, acl, size);
atomic_set(&clone->a_refcount, 1); atomic_set(&clone->a_refcount, 1);
} }
}
return clone; return clone;
} }
......
...@@ -1324,12 +1324,11 @@ struct mempolicy *__mpol_copy(struct mempolicy *old) ...@@ -1324,12 +1324,11 @@ struct mempolicy *__mpol_copy(struct mempolicy *old)
atomic_set(&new->refcnt, 1); atomic_set(&new->refcnt, 1);
if (new->policy == MPOL_BIND) { if (new->policy == MPOL_BIND) {
int sz = ksize(old->v.zonelist); int sz = ksize(old->v.zonelist);
new->v.zonelist = kmalloc(sz, SLAB_KERNEL); new->v.zonelist = kmemdup(old->v.zonelist, sz, SLAB_KERNEL);
if (!new->v.zonelist) { if (!new->v.zonelist) {
kmem_cache_free(policy_cache, new); kmem_cache_free(policy_cache, new);
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
} }
memcpy(new->v.zonelist, old->v.zonelist, sz);
} }
return new; return new;
} }
......
...@@ -381,11 +381,10 @@ static int rxrpc_incoming_msg(struct rxrpc_transport *trans, ...@@ -381,11 +381,10 @@ static int rxrpc_incoming_msg(struct rxrpc_transport *trans,
/* allocate a new message record */ /* allocate a new message record */
ret = -ENOMEM; ret = -ENOMEM;
msg = kmalloc(sizeof(struct rxrpc_message), GFP_KERNEL); msg = kmemdup(jumbomsg, sizeof(struct rxrpc_message), GFP_KERNEL);
if (!msg) if (!msg)
goto error; goto error;
memcpy(msg, jumbomsg, sizeof(*msg));
list_add_tail(&msg->link, msgq); list_add_tail(&msg->link, msgq);
/* adjust the jumbo packet */ /* adjust the jumbo packet */
......
...@@ -302,11 +302,11 @@ static int switch_asic(struct echoaudio *chip, const struct firmware *asic) ...@@ -302,11 +302,11 @@ static int switch_asic(struct echoaudio *chip, const struct firmware *asic)
/* Check to see if this is already loaded */ /* Check to see if this is already loaded */
if (asic != chip->asic_code) { if (asic != chip->asic_code) {
monitors = kmalloc(MONITOR_ARRAY_SIZE, GFP_KERNEL); monitors = kmemdup(chip->comm_page->monitors,
MONITOR_ARRAY_SIZE, GFP_KERNEL);
if (! monitors) if (! monitors)
return -ENOMEM; return -ENOMEM;
memcpy(monitors, chip->comm_page->monitors, MONITOR_ARRAY_SIZE);
memset(chip->comm_page->monitors, ECHOGAIN_MUTED, memset(chip->comm_page->monitors, ECHOGAIN_MUTED,
MONITOR_ARRAY_SIZE); MONITOR_ARRAY_SIZE);
......
...@@ -2046,10 +2046,9 @@ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request, ...@@ -2046,10 +2046,9 @@ int snd_usb_ctl_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
void *buf = NULL; void *buf = NULL;
if (size > 0) { if (size > 0) {
buf = kmalloc(size, GFP_KERNEL); buf = kmemdup(data, size, GFP_KERNEL);
if (!buf) if (!buf)
return -ENOMEM; return -ENOMEM;
memcpy(buf, data, size);
} }
err = usb_control_msg(dev, pipe, request, requesttype, err = usb_control_msg(dev, pipe, request, requesttype,
value, index, buf, size, timeout); value, index, buf, size, timeout);
...@@ -2846,12 +2845,11 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip, ...@@ -2846,12 +2845,11 @@ static int create_fixed_stream_quirk(struct snd_usb_audio *chip,
int stream, err; int stream, err;
int *rate_table = NULL; int *rate_table = NULL;
fp = kmalloc(sizeof(*fp), GFP_KERNEL); fp = kmemdup(quirk->data, sizeof(*fp), GFP_KERNEL);
if (! fp) { if (! fp) {
snd_printk(KERN_ERR "cannot malloc\n"); snd_printk(KERN_ERR "cannot memdup\n");
return -ENOMEM; return -ENOMEM;
} }
memcpy(fp, quirk->data, sizeof(*fp));
if (fp->nr_rates > 0) { if (fp->nr_rates > 0) {
rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL); rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL);
if (!rate_table) { if (!rate_table) {
...@@ -3029,10 +3027,9 @@ static int create_ua1000_quirk(struct snd_usb_audio *chip, ...@@ -3029,10 +3027,9 @@ static int create_ua1000_quirk(struct snd_usb_audio *chip,
altsd->bNumEndpoints != 1) altsd->bNumEndpoints != 1)
return -ENXIO; return -ENXIO;
fp = kmalloc(sizeof(*fp), GFP_KERNEL); fp = kmemdup(&ua1000_format, sizeof(*fp), GFP_KERNEL);
if (!fp) if (!fp)
return -ENOMEM; return -ENOMEM;
memcpy(fp, &ua1000_format, sizeof(*fp));
fp->channels = alts->extra[4]; fp->channels = alts->extra[4];
fp->iface = altsd->bInterfaceNumber; fp->iface = altsd->bInterfaceNumber;
......
...@@ -323,10 +323,9 @@ static int send_bulk_static_data(struct snd_usb_midi_out_endpoint* ep, ...@@ -323,10 +323,9 @@ static int send_bulk_static_data(struct snd_usb_midi_out_endpoint* ep,
const void *data, int len) const void *data, int len)
{ {
int err; int err;
void *buf = kmalloc(len, GFP_KERNEL); void *buf = kmemdup(data, len, GFP_KERNEL);
if (!buf) if (!buf)
return -ENOMEM; return -ENOMEM;
memcpy(buf, data, len);
dump_urb("sending", buf, len); dump_urb("sending", buf, len);
err = usb_bulk_msg(ep->umidi->chip->dev, ep->urb->pipe, buf, len, err = usb_bulk_msg(ep->umidi->chip->dev, ep->urb->pipe, buf, len,
NULL, 250); NULL, 250);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment