Re: what is the state of current after an mm_fault occurs?

From: Andrew Morton
Date: Thu Jan 05 2006 - 18:17:25 EST


Christoph Lameter <clameter@xxxxxxxxxxxx> wrote:
>
> On Wed, 4 Jan 2006, Andrew Morton wrote:
>
> > > You mean in some pagefault place we do schedule()?
> >
> > We used to - that should no longer be the case. The TASK_RUNNING thing is
> > probably redundant now.
>
> The page fault handler calls the page allocator in various places
> which may sleep.

That's OK - they should all do set_current_state() before sleeping. It's
the bare schedule() without previously setting TASK_foo which is the
problem. We used to do that sort of thing in 2.4 as a lame yield point but
we really shouldn't be doing that at all anywhere any more.

> current may not point to the current process if the page fault handler was
> called from get_user_pages.

current always points at the current process. In the situation
ptrace->access_process_vm->get_user_pages->pagefault we'll have mm !=
current->mm.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/