Commit 52978be636374c4bfb61220b37fa12f55a071c46
Committed by
Linus Torvalds
1 parent
1a2f67b459
Exists in
master
and in
39 other branches
[PATCH] kmemdup: some users
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 7 changed files with 13 additions and 22 deletions Side-by-side Diff
arch/i386/kernel/process.c
... | ... | @@ -425,13 +425,12 @@ |
425 | 425 | |
426 | 426 | tsk = current; |
427 | 427 | if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) { |
428 | - p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); | |
428 | + p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr, | |
429 | + IO_BITMAP_BYTES, GFP_KERNEL); | |
429 | 430 | if (!p->thread.io_bitmap_ptr) { |
430 | 431 | p->thread.io_bitmap_max = 0; |
431 | 432 | return -ENOMEM; |
432 | 433 | } |
433 | - memcpy(p->thread.io_bitmap_ptr, tsk->thread.io_bitmap_ptr, | |
434 | - IO_BITMAP_BYTES); | |
435 | 434 | set_tsk_thread_flag(p, TIF_IO_BITMAP); |
436 | 435 | } |
437 | 436 |
fs/posix_acl.c
... | ... | @@ -58,11 +58,9 @@ |
58 | 58 | if (acl) { |
59 | 59 | int size = sizeof(struct posix_acl) + acl->a_count * |
60 | 60 | sizeof(struct posix_acl_entry); |
61 | - clone = kmalloc(size, flags); | |
62 | - if (clone) { | |
63 | - memcpy(clone, acl, size); | |
61 | + clone = kmemdup(acl, size, flags); | |
62 | + if (clone) | |
64 | 63 | atomic_set(&clone->a_refcount, 1); |
65 | - } | |
66 | 64 | } |
67 | 65 | return clone; |
68 | 66 | } |
mm/mempolicy.c
... | ... | @@ -1324,12 +1324,11 @@ |
1324 | 1324 | atomic_set(&new->refcnt, 1); |
1325 | 1325 | if (new->policy == MPOL_BIND) { |
1326 | 1326 | int sz = ksize(old->v.zonelist); |
1327 | - new->v.zonelist = kmalloc(sz, SLAB_KERNEL); | |
1327 | + new->v.zonelist = kmemdup(old->v.zonelist, sz, SLAB_KERNEL); | |
1328 | 1328 | if (!new->v.zonelist) { |
1329 | 1329 | kmem_cache_free(policy_cache, new); |
1330 | 1330 | return ERR_PTR(-ENOMEM); |
1331 | 1331 | } |
1332 | - memcpy(new->v.zonelist, old->v.zonelist, sz); | |
1333 | 1332 | } |
1334 | 1333 | return new; |
1335 | 1334 | } |
net/rxrpc/transport.c
... | ... | @@ -381,11 +381,10 @@ |
381 | 381 | |
382 | 382 | /* allocate a new message record */ |
383 | 383 | ret = -ENOMEM; |
384 | - msg = kmalloc(sizeof(struct rxrpc_message), GFP_KERNEL); | |
384 | + msg = kmemdup(jumbomsg, sizeof(struct rxrpc_message), GFP_KERNEL); | |
385 | 385 | if (!msg) |
386 | 386 | goto error; |
387 | 387 | |
388 | - memcpy(msg, jumbomsg, sizeof(*msg)); | |
389 | 388 | list_add_tail(&msg->link, msgq); |
390 | 389 | |
391 | 390 | /* adjust the jumbo packet */ |
sound/pci/echoaudio/layla24_dsp.c
... | ... | @@ -302,11 +302,11 @@ |
302 | 302 | |
303 | 303 | /* Check to see if this is already loaded */ |
304 | 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 | 307 | if (! monitors) |
307 | 308 | return -ENOMEM; |
308 | 309 | |
309 | - memcpy(monitors, chip->comm_page->monitors, MONITOR_ARRAY_SIZE); | |
310 | 310 | memset(chip->comm_page->monitors, ECHOGAIN_MUTED, |
311 | 311 | MONITOR_ARRAY_SIZE); |
312 | 312 |
sound/usb/usbaudio.c
... | ... | @@ -2046,10 +2046,9 @@ |
2046 | 2046 | void *buf = NULL; |
2047 | 2047 | |
2048 | 2048 | if (size > 0) { |
2049 | - buf = kmalloc(size, GFP_KERNEL); | |
2049 | + buf = kmemdup(data, size, GFP_KERNEL); | |
2050 | 2050 | if (!buf) |
2051 | 2051 | return -ENOMEM; |
2052 | - memcpy(buf, data, size); | |
2053 | 2052 | } |
2054 | 2053 | err = usb_control_msg(dev, pipe, request, requesttype, |
2055 | 2054 | value, index, buf, size, timeout); |
2056 | 2055 | |
2057 | 2056 | |
... | ... | @@ -2846,12 +2845,11 @@ |
2846 | 2845 | int stream, err; |
2847 | 2846 | int *rate_table = NULL; |
2848 | 2847 | |
2849 | - fp = kmalloc(sizeof(*fp), GFP_KERNEL); | |
2848 | + fp = kmemdup(quirk->data, sizeof(*fp), GFP_KERNEL); | |
2850 | 2849 | if (! fp) { |
2851 | - snd_printk(KERN_ERR "cannot malloc\n"); | |
2850 | + snd_printk(KERN_ERR "cannot memdup\n"); | |
2852 | 2851 | return -ENOMEM; |
2853 | 2852 | } |
2854 | - memcpy(fp, quirk->data, sizeof(*fp)); | |
2855 | 2853 | if (fp->nr_rates > 0) { |
2856 | 2854 | rate_table = kmalloc(sizeof(int) * fp->nr_rates, GFP_KERNEL); |
2857 | 2855 | if (!rate_table) { |
2858 | 2856 | |
... | ... | @@ -3029,10 +3027,9 @@ |
3029 | 3027 | altsd->bNumEndpoints != 1) |
3030 | 3028 | return -ENXIO; |
3031 | 3029 | |
3032 | - fp = kmalloc(sizeof(*fp), GFP_KERNEL); | |
3030 | + fp = kmemdup(&ua1000_format, sizeof(*fp), GFP_KERNEL); | |
3033 | 3031 | if (!fp) |
3034 | 3032 | return -ENOMEM; |
3035 | - memcpy(fp, &ua1000_format, sizeof(*fp)); | |
3036 | 3033 | |
3037 | 3034 | fp->channels = alts->extra[4]; |
3038 | 3035 | fp->iface = altsd->bInterfaceNumber; |
sound/usb/usbmidi.c
... | ... | @@ -323,10 +323,9 @@ |
323 | 323 | const void *data, int len) |
324 | 324 | { |
325 | 325 | int err; |
326 | - void *buf = kmalloc(len, GFP_KERNEL); | |
326 | + void *buf = kmemdup(data, len, GFP_KERNEL); | |
327 | 327 | if (!buf) |
328 | 328 | return -ENOMEM; |
329 | - memcpy(buf, data, len); | |
330 | 329 | dump_urb("sending", buf, len); |
331 | 330 | err = usb_bulk_msg(ep->umidi->chip->dev, ep->urb->pipe, buf, len, |
332 | 331 | NULL, 250); |