Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2548729pxj; Mon, 10 May 2021 05:41:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyeqmiUxyuhxK17pvSc2zmQZYSQmMfLG9JyjB46DizbQrn7CS/sW7v/amXlGRfYJWA1Zgn8 X-Received: by 2002:a17:907:372:: with SMTP id rs18mr25559552ejb.431.1620650512044; Mon, 10 May 2021 05:41:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620650512; cv=none; d=google.com; s=arc-20160816; b=aElnUJpF0A4dBj5VWkTtoBeNAYxQjGP8fDKa0uQb2zcCy/NQYxtv8J0Jj4TrUmLt8J pe5/JWWLb3DQuEKG/1dRPpfMB0fAcAGKClqx0v/TiLADlAGSECt6TTar3BGmtyYGycuo C3kYvOxedbr59B5zF92ckwujMTyr3Sbw2AObb973VBrB9eZUnAGSR6snmPYSNSV2FfDY +3H6BhbCQn2k5UL+RLewhLNNqYDvTZ+DJi8exz2OD7WPDwVHBuRDgFvGc3m++XOfaXeZ GmJ/ZUQweJZYYgQltHJZZckkXRgs9IPpzbZqdPqG2R29O6xk3l6XhVQhfTtPnfZJSklv asFA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=0vHEZmWrz9wDEKKGK8P8ozbMQhtCpmT+WLYTdxOB7mE=; b=hsqlXnYKmrky+g2+ARjfUGKATz+RSmBCYgcNue6AWtn+4TXjoNn39+V4wPJLG36sfD 3b5V6uA0eNm0vNKEs6tdnqxB2b/FaActzx5haL84FmkqYyv42PogCgeS6Z307X8DKvjh oPPzVZNtT34r1KiuCYmaRFBE/erwMNJTTk9njRq+C5hiXH1J0Kg7fTnEbR4dHd4qSXxB uUmXtTQ+RxqIRmbRT3DrCWGPB4SFZHZutkK3ACeGNABwSBxEZa9T9uTDgE7EzrGFNLXa PwCrkUa/yHZFCeN0jCjhJmW8Z02sXDeQy9jmOC7AnULlmNdQvhQIi6svdhSgLKSTwVJ6 YLtQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=y6aEp0X3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s10si13307502edy.350.2021.05.10.05.41.28; Mon, 10 May 2021 05:41:52 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=y6aEp0X3; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347304AbhEJMdw (ORCPT + 99 others); Mon, 10 May 2021 08:33:52 -0400 Received: from mail.kernel.org ([198.145.29.99]:49986 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232879AbhEJLLz (ORCPT ); Mon, 10 May 2021 07:11:55 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7EDDF6193A; Mon, 10 May 2021 11:09:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1620644983; bh=kwOyVJpLtd8gheGbQRqdFlIORGINOYnXM+3NvNS/wfs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=y6aEp0X36dpTMoRmBa4IDRLWX9gx4pv5Yb6GfQBCE9ECiEuQyXRRQce82tbNs5Adu cxxa3B4FTM9j48EzX9DgOSZiCAQbTaRHJ+c37Up6hQ4tY5cPLqTp2v0E9R+szUeQ+2 0qStWgfIruKRKYnwZUV+11E3VsO32yZTntWYZ93U= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Charan Teja Reddy , "Peter Zijlstra (Intel)" , Johannes Weiner , Sasha Levin Subject: [PATCH 5.12 268/384] sched,psi: Handle potential task count underflow bugs more gracefully Date: Mon, 10 May 2021 12:20:57 +0200 Message-Id: <20210510102023.682497731@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210510102014.849075526@linuxfoundation.org> References: <20210510102014.849075526@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Charan Teja Reddy [ Upstream commit 9d10a13d1e4c349b76f1c675a874a7f981d6d3b4 ] psi_group_cpu->tasks, represented by the unsigned int, stores the number of tasks that could be stalled on a psi resource(io/mem/cpu). Decrementing these counters at zero leads to wrapping which further leads to the psi_group_cpu->state_mask is being set with the respective pressure state. This could result into the unnecessary time sampling for the pressure state thus cause the spurious psi events. This can further lead to wrong actions being taken at the user land based on these psi events. Though psi_bug is set under these conditions but that just for debug purpose. Fix it by decrementing the ->tasks count only when it is non-zero. Signed-off-by: Charan Teja Reddy Signed-off-by: Peter Zijlstra (Intel) Acked-by: Johannes Weiner Link: https://lkml.kernel.org/r/1618585336-37219-1-git-send-email-charante@codeaurora.org Signed-off-by: Sasha Levin --- kernel/sched/psi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c index 967732c0766c..651218ded981 100644 --- a/kernel/sched/psi.c +++ b/kernel/sched/psi.c @@ -711,14 +711,15 @@ static void psi_group_change(struct psi_group *group, int cpu, for (t = 0, m = clear; m; m &= ~(1 << t), t++) { if (!(m & (1 << t))) continue; - if (groupc->tasks[t] == 0 && !psi_bug) { + if (groupc->tasks[t]) { + groupc->tasks[t]--; + } else if (!psi_bug) { printk_deferred(KERN_ERR "psi: task underflow! cpu=%d t=%d tasks=[%u %u %u %u] clear=%x set=%x\n", cpu, t, groupc->tasks[0], groupc->tasks[1], groupc->tasks[2], groupc->tasks[3], clear, set); psi_bug = 1; } - groupc->tasks[t]--; } for (t = 0; set; set &= ~(1 << t), t++) -- 2.30.2