Re: [patch 6/11] s390: in_interrupt vs. in_atomic.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Martin Schwidefsky <[email protected]> wrote:
>
> [patch 6/11] s390: in_interrupt vs. in_atomic.
> 
> From: Martin Schwidefsky <[email protected]>
> 
> The condition for no context in do_exception checks for hard and
> soft interrupts by using in_interrupt() but not for preemption.
> This is bad for the users of __copy_from/to_user_inatomic because
> the fault handler might call schedule although the preemption
> count is != 0. Use in_atomic() instead in_interrupt().
> 

hm.  Under what circumstances do you expect this test to trigger?

We have the in_atomic() test in x86's do_page_fault() because as a
super-special case, kmap_atomic() will increment preempt_count() even if
!CONFIG_PREEMPT.  This is how x86 handles faults during
pagecache<->userspace copies into a kmap_atomically-mapped page.  s390
doesn't do any of that.

So.  What's going on in here?

> 
> diffstat:
>  arch/s390/mm/fault.c |    2 +-
>  1 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff -urpN linux-2.6/arch/s390/mm/fault.c linux-2.6-patched/arch/s390/mm/fault.c
> --- linux-2.6/arch/s390/mm/fault.c	2005-06-01 19:42:54.000000000 +0200
> +++ linux-2.6-patched/arch/s390/mm/fault.c	2005-06-01 19:43:18.000000000 +0200
> @@ -207,7 +207,7 @@ do_exception(struct pt_regs *regs, unsig
>  	 * we are not in an interrupt and that there is a 
>  	 * user context.
>  	 */

Comment needs updating...

> -        if (user_address == 0 || in_interrupt() || !mm)
> +        if (user_address == 0 || in_atomic() || !mm)
>                  goto no_context;
>  
>  	/*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux