From patchwork Thu May 4 00:02:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Axtens X-Patchwork-Id: 758283 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3wJFbg0wkqz9s0g; Thu, 4 May 2017 10:03:11 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=canonical-com.20150623.gappssmtp.com header.i=@canonical-com.20150623.gappssmtp.com header.b="pb01jzWr"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1d64Ed-0002nK-Ne; Thu, 04 May 2017 00:03:07 +0000 Received: from mail-pf0-f169.google.com ([209.85.192.169]) by huckleberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1d64ES-0002cm-5w for kernel-team@lists.canonical.com; Thu, 04 May 2017 00:02:56 +0000 Received: by mail-pf0-f169.google.com with SMTP id v14so2269784pfd.2 for ; Wed, 03 May 2017 17:02:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=CMyVuTtSTir/Qp+Xf28B9Scm5+8PGpaUCq4hcAAWC0c=; b=pb01jzWrN0K/bV+3H5iIzMcDBxa+/hcybJobrVVgFsp449nTnruyf/Y9jrLZUlXioQ 8hru+su71HmQp6RDWhssuwCOidetCLsE2mJFv37pxtylIXevWfZRPP+u4K5s8FDnVgxe C0jt+GdpCtYCSzjh83Yk0228CxcBpb0ONCeQhXh3ZvFi27PHxj9bIuBnDtYC15ptgsZI JPegAOYuEc+VkUmLAcPBp7G4Be0AObZMVGz1g97vJEe5SXH3LN27A58PHo4Zv+Cia7xU VrRksgg1DEm3GrUGedFaZO7SfcCO4Y6axhi8dCrDcpFpHjkEf4Izdf46qyWOy4bnNoBk s6dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=CMyVuTtSTir/Qp+Xf28B9Scm5+8PGpaUCq4hcAAWC0c=; b=iudtaw1tZDeuv/1lUHwtG3/TLN/6kWoy0WEuuBZ3sZXUjbDQMZUmF/1yeVdDek2yqd eVSzfCX71ybxHXNSjvjVqCzV5PG/ONQh2k2EWNpGxigoxZbO/3wTgDZdqY3RNjEbvMpJ rRjHXQYl9id4tH4OeHZlyfWZNMx1+I9jP7HWBKa5YbChdhvJszIOb2FO3NmT80nVuCXh l1x8f4AiY3BSB8zBQ1eT+jnPIIV+LlVBmDZSlcWy+9ZoVMl2KxNc2zhoaEn1PdFsh9hd bUcVHtY3CEwETTawT2Z+RmyzlUOxlnuF0pkgKvvE9pMrmYGc527Y+QTO1K0q6tga47Dj 67HQ== X-Gm-Message-State: AN3rC/7LifwDcX7VNBRAGhH5FDFdptx+TyNfAMJS+ebsahx/tYAUOqku T4xBb8/hNYCa++pNoCI= X-Received: by 10.84.222.133 with SMTP id x5mr20086615pls.36.1493856174775; Wed, 03 May 2017 17:02:54 -0700 (PDT) Received: from localhost.localdomain (124-171-164-116.dyn.iinet.net.au. [124.171.164.116]) by smtp.gmail.com with ESMTPSA id 66sm427334pgd.47.2017.05.03.17.02.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 May 2017 17:02:54 -0700 (PDT) From: Daniel Axtens To: kernel-team@lists.canonical.com Subject: [SRU][Xenial][PATCH 1/2] sched/fair: Do not announce throttled next buddy in dequeue_task_fair() Date: Thu, 4 May 2017 10:02:43 +1000 Message-Id: <20170504000244.14771-2-daniel.axtens@canonical.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170504000244.14771-1-daniel.axtens@canonical.com> References: <20170504000244.14771-1-daniel.axtens@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: Konstantin Khlebnikov BugLink: https://bugs.launchpad.net/bugs/1687512 Hierarchy could be already throttled at this point. Throttled next buddy could trigger a NULL pointer dereference in pick_next_task_fair(). Signed-off-by: Konstantin Khlebnikov Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Ben Segall Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Link: http://lkml.kernel.org/r/146608183552.21905.15924473394414832071.stgit@buzz Signed-off-by: Ingo Molnar (cherry-picked from commit 754bd598be9bbc953bc709a9e8ed7f3188bfb9d7) Signed-off-by: Daniel Axtens --- kernel/sched/fair.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 4afcbc020457..d109b366f3c6 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -4251,15 +4251,14 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags) /* Don't dequeue parent if it has other entities besides us */ if (cfs_rq->load.weight) { + /* Avoid re-evaluating load for this entity: */ + se = parent_entity(se); /* * Bias pick_next to pick a task from this cfs_rq, as * p is sleeping when it is within its sched_slice. */ - if (task_sleep && parent_entity(se)) - set_next_buddy(parent_entity(se)); - - /* avoid re-evaluating load for this entity */ - se = parent_entity(se); + if (task_sleep && se && !throttled_hierarchy(cfs_rq)) + set_next_buddy(se); break; } flags |= DEQUEUE_SLEEP;