Hello, Oleg.
On Tue, Oct 23, 2012 at 05:39:19PM +0200, Oleg Nesterov wrote:
> > Hmm Guess we should drop __ from set_current_state.
>
> Yes.
>
> Or we can change ptrace_stop() and do_signal_stop() to use
> freezer_do_not_count/
> freezer_count and remove task_is_stopped_or_traced() from up
Hi Tejun,
On 10/22, Tejun Heo wrote:
>
> On Mon, Oct 22, 2012 at 07:44:04PM +0200, Oleg Nesterov wrote:
>
> > We probably have another similar race. If ptrace_stop()->may_ptrace_stop()
> > returns false, the task does
> >
> > __set_current_state(TASK_RUNNING);
> > // no mb in between
> >
Hello, Oleg.
On Mon, Oct 22, 2012 at 07:44:04PM +0200, Oleg Nesterov wrote:
> > static inline void freezer_count(void)
> > {
> > current->flags &= ~PF_FREEZER_SKIP;
> > + /*
> > +* If freezing is in progress, the following paired with smp_mb()
> > +* in freezer_should_skip() ensure
On 10/16, Tejun Heo wrote:
>
> +/**
> + * freezer_count - tell freezer to stop ignoring %current
> + *
> + * Undo freezer_do_not_count(). It tells freezers that %current should be
> + * considered again and tries to freeze if freezing condition is already in
> + * effect.
> */
> static inline v
A task is considered frozen enough between freezer_do_not_count() and
freezer_count() and freezers use freezer_should_skip() to test this
condition. This supposedly works because freezer_count() always calls
try_to_freezer() after clearing %PF_FREEZER_SKIP.
However, there currently is nothing whi