core: Fix user return notifier on fork()
authorAvi Kivity <avi@redhat.com>
Sun, 29 Nov 2009 14:34:48 +0000 (16:34 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 29 Nov 2009 21:03:04 +0000 (22:03 +0100)
commit8e7cac79808b62f242069a6ac88d364d35621371
treeb68dacc4e080ec8c4587d783a8014906e2eb2445
parent3c912b6edaac56cb451e7571c95c15cbb6bd0c81
core: Fix user return notifier on fork()

fork() clones all thread_info flags, including
TIF_USER_RETURN_NOTIFY; if the new task is first scheduled on a cpu
which doesn't have user return notifiers set, this causes user
return notifiers to trigger without any way of clearing itself.

This is easy to trigger with a forky workload on the host in
parallel with kvm, resulting in a cpu in an endless loop on the
verge of returning to userspace.

Fix by dropping the TIF_USER_RETURN_NOTIFY immediately after fork.

Signed-off-by: Avi Kivity <avi@redhat.com>
LKML-Reference: <1259505288-16559-1-git-send-email-avi@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
include/linux/user-return-notifier.h
kernel/fork.c