diff options
| -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 | ||
