Subject: Re: linux-next: manual merge of the userns tree with the arc-current tree

From: Stephen Rothwell <[email-masked]>
Date: Tue, 9 Jul 2019 09:15:21 +1000

Hi all,

On Thu, 30 May 2019 13:17:21 +1000 Stephen Rothwell <[email-masked]> wrote:
>
> Today's linux-next merge of the userns tree got a conflict in:
> 
>   arch/arc/mm/fault.c
> 
> between commits:
> 
>   a8c715b4dd73 ("ARC: mm: SIGSEGV userspace trying to access kernel virtual memory")
>   ea3885229b0f ("ARC: mm: do_page_fault refactor #5: scoot no_context to end")
>   acc639eca380 ("ARC: mm: do_page_fault refactor #6: error handlers to use same pattern")
>   0c85612550a4 ("ARC: mm: do_page_fault refactor #7: fold the various error handling")
>   c5d7f7610d88 ("ARC: mm: do_page_fault refactor #8: release mmap_sem sooner")
> 
> from the arc-current tree and commits:
> 
>   351b6825b3a9 ("signal: Explicitly call force_sig_fault on current")
>   2e1661d26736 ("signal: Remove the task parameter from force_sig_fault")
> 
> from the userns tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> -- 
> Cheers,
> Stephen Rothwell
> 
> diff --cc arch/arc/mm/fault.c
> index e93ea06c214c,5001f6418e92..000000000000
> --- a/arch/arc/mm/fault.c
> +++ b/arch/arc/mm/fault.c
> @@@ -187,21 -228,14 +187,21 @@@ bad_area
>   		return;
>   	}
>   
>  -	goto no_context;
>  +	if (fault & VM_FAULT_SIGBUS) {
>  +		sig = SIGBUS;
>  +		si_code = BUS_ADRERR;
>  +	}
>  +	else {
>  +		sig = SIGSEGV;
>  +	}
>   
>  -do_sigbus:
>  -	up_read(&mm->mmap_sem);
>  +	tsk->thread.fault_address = address;
> - 	force_sig_fault(sig, si_code, (void __user *)address, tsk);
> ++	force_sig_fault(sig, si_code, (void __user *)address);
>  +	return;
>   
>  -	if (!user_mode(regs))
>  -		goto no_context;
>  +no_context:
>  +	if (fixup_exception(regs))
>  +		return;
>   
>  -	tsk->thread.fault_address = address;
>  -	force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
>  +	die("Oops", regs, address);
>   }

I am still getting this conflict (the commit ids may have changed).
Just a reminder in case you think Linus may need to know.

-- 
Cheers,
Stephen Rothwell