Re: [PATCH 14/23] userfaultfd: wake pending userfaults
From: Peter Zijlstra
Date: Thu Oct 22 2015 - 09:38:37 EST
On Thu, Oct 22, 2015 at 03:20:15PM +0200, Andrea Arcangeli wrote:
> If schedule spontaneously wakes up a task in TASK_KILLABLE state that
> would be a bug in the scheduler in my view. Luckily there doesn't seem
> to be such a bug, or at least we never experienced it.
Well, there will be a wakeup, just not the one you were hoping for.
We have code that does:
@cond = true;
get_task_struct(p);
queue(p)
/* random wait somewhere */
for (;;) {
prepare_to_wait();
if (@cond)
break;
...
handle_userfault()
...
schedule();
...
dequeue(p)
wake_up_process(p) ---> wakeup without userfault wakeup
These races are (extremely) rare, but they do exist. Therefore one must
never assume schedule() will not spuriously wake because of these
things.
Also, see:
lkml.kernel.org/r/CA+55aFwHkOo+YGWKYROmce1-H_uG3KfEUmCkJUerTj=ojY2H6Q@xxxxxxxxxxxxxx
--
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/