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

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

 



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

e.g. by the following:

static inline int get_futex_value_locked(int *dest, int __user *from)
{
        int ret;

        inc_preempt_count();
        ret = __copy_from_user_inatomic(dest, from, sizeof(int));
        dec_preempt_count();
        preempt_check_resched();

        return ret ? -EFAULT : 0;
}

in_interrupt only checks for HARDIRQ_MASK and SOFTIRQ_MASK but not
for the preemption counter. This is not a theory, we had a bug report
concerning a "bad: scheduling while atomic!" warning.

blue skies,
   Martin

Martin Schwidefsky
Linux for zSeries Development & Services
IBM Deutschland Entwicklung GmbH


-
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