Hi Josh, Today's linux-next merge of the tiny tree got conflicts in arch/x86/kernel/process_32.c and arch/x86/kernel/process_64.c between commits dc56c0f9b870 ("x86, fpu: Shift "fpu_counter = 0" from copy_thread() to arch_dup_task_struct()") and 6f46b3aef003 ("x86: copy_thread: Don't nullify ->ptrace_bps twice") from the tip tree and commits a1cf09f93e66 ("x86: process: Unify 32-bit and 64-bit copy_thread I/O bitmap handling") and e4a191d1e05b ("x86: Support compiling out userspace I/O (iopl and ioperm)") from the tiny tree. I fixed it up (I think - see below) and can carry the fix as necessary (no action is required). -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc arch/x86/kernel/process_32.c index 8f3ebfe710d0,e37f006fda6e..000000000000 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c @@@ -153,7 -153,9 +154,7 @@@ int copy_thread(unsigned long clone_fla childregs->orig_ax = -1; childregs->cs = __KERNEL_CS | get_kernel_rpl(); childregs->flags = X86_EFLAGS_IF | X86_EFLAGS_FIXED; - p->thread.io_bitmap_ptr = NULL; - p->thread.fpu_counter = 0; + clear_thread_io_bitmap(p); - memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); return 0; } *childregs = *current_pt_regs(); @@@ -164,22 -166,12 +165,9 @@@ p->thread.ip = (unsigned long) ret_from_fork; task_user_gs(p) = get_user_gs(current_pt_regs()); - p->thread.io_bitmap_ptr = NULL; - p->thread.fpu_counter = 0; + clear_thread_io_bitmap(p); tsk = current; - err = -ENOMEM; - - if (unlikely(test_tsk_thread_flag(tsk, TIF_IO_BITMAP))) { - p->thread.io_bitmap_ptr = kmemdup(tsk->thread.io_bitmap_ptr, - IO_BITMAP_BYTES, GFP_KERNEL); - if (!p->thread.io_bitmap_ptr) { - p->thread.io_bitmap_max = 0; - return -ENOMEM; - } - set_tsk_thread_flag(p, TIF_IO_BITMAP); - } - - err = 0; - memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); - /* * Set a new TLS for the child thread? */ diff --cc arch/x86/kernel/process_64.c index 3ed4a68d4013,80f348659edd..000000000000 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@@ -163,7 -164,8 +164,7 @@@ int copy_thread(unsigned long clone_fla p->thread.sp = (unsigned long) childregs; p->thread.usersp = me->thread.usersp; set_tsk_thread_flag(p, TIF_FORK); - p->thread.io_bitmap_ptr = NULL; - p->thread.fpu_counter = 0; + clear_thread_io_bitmap(p); savesegment(gs, p->thread.gsindex); p->thread.gs = p->thread.gsindex ? 0 : me->thread.gs; @@@ -191,17 -193,8 +192,6 @@@ if (sp) childregs->sp = sp; - err = -ENOMEM; - if (unlikely(test_tsk_thread_flag(me, TIF_IO_BITMAP))) { - p->thread.io_bitmap_ptr = kmemdup(me->thread.io_bitmap_ptr, - IO_BITMAP_BYTES, GFP_KERNEL); - if (!p->thread.io_bitmap_ptr) { - p->thread.io_bitmap_max = 0; - return -ENOMEM; - } - set_tsk_thread_flag(p, TIF_IO_BITMAP); - } - memset(p->thread.ptrace_bps, 0, sizeof(p->thread.ptrace_bps)); -- /* * Set a new TLS for the child thread? */
Attachment:
signature.asc
Description: PGP signature