Subject: linux-next: manual merge of the tiny tree with the tip tree

From: Stephen Rothwell <[email-masked]>
Date: Tue, 23 Sep 2014 14:32:32 +1000

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                    [email-masked]

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?
  	 */