diff options
Diffstat (limited to 'arch/x86/kernel/process_64.c')
-rw-r--r-- | arch/x86/kernel/process_64.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 3bd7e6eebf31..d2c1f6208d62 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -293,13 +293,12 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
293 | memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); | 293 | memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); |
294 | 294 | ||
295 | if (unlikely(test_tsk_thread_flag(me, TIF_IO_BITMAP))) { | 295 | if (unlikely(test_tsk_thread_flag(me, TIF_IO_BITMAP))) { |
296 | p->thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL); | 296 | p->thread.io_bitmap_ptr = kmemdup(me->thread.io_bitmap_ptr, |
297 | IO_BITMAP_BYTES, GFP_KERNEL); | ||
297 | if (!p->thread.io_bitmap_ptr) { | 298 | if (!p->thread.io_bitmap_ptr) { |
298 | p->thread.io_bitmap_max = 0; | 299 | p->thread.io_bitmap_max = 0; |
299 | return -ENOMEM; | 300 | return -ENOMEM; |
300 | } | 301 | } |
301 | memcpy(p->thread.io_bitmap_ptr, me->thread.io_bitmap_ptr, | ||
302 | IO_BITMAP_BYTES); | ||
303 | set_tsk_thread_flag(p, TIF_IO_BITMAP); | 302 | set_tsk_thread_flag(p, TIF_IO_BITMAP); |
304 | } | 303 | } |
305 | 304 | ||