Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3714196pxu; Tue, 8 Dec 2020 21:19:21 -0800 (PST) X-Google-Smtp-Source: ABdhPJyfhqRXHtHgFr9jg9mAU4PCE5cBO4wuLYlGw+ykN2U/Gg6h2Y1X5xFxupXa+nSt3H9fIcNV X-Received: by 2002:aa7:c058:: with SMTP id k24mr423427edo.263.1607491160926; Tue, 08 Dec 2020 21:19:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607491160; cv=none; d=google.com; s=arc-20160816; b=f8MQtLdYY+yhTohnmGNR48gWRp5R17dDvd1/woQw/V4jj7FabHPsKPHr5++nq47FWV ceq42sn8AgIR8DnqyRmhQw3ml8o3rpQrW9hwF+97w9TEcyi63kNFwGUwYvEzvD46iHcI iVu0OT+sMzfJe62tnnUzpiYKsKehk2s8rOVeW/xkXdx69twr2LuWwSORBZAPj9sqEMMV vsSxlUhXOvbrgHEp3Q4ESCPDHLW8fx5/y3jcClD+cGkVWsm+f32OAy5pAdLSBSCveuUa aulDVhDjPXXc5yTBo28wmHYZ9KPYVTjffTBGqdw3bwg4NnbYlE//HfekBannp3rH+0Xn YFpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=tEWLaiABhfSkvT1cOB+vXvjqCQDKr8VP2HOqqGxlXaU=; b=GDb0++FKnR182y1ivzMHBLC6nT0ruZ1GTeCfAWB6EVL6xgIKte8TxVSFPvc8kBfIjt X3OP5jlmWqFmwnja+4SpoZfbPTTVk5QT7uMAHTGwNGDQAD4UKa53Bs/uXiwL3twSc5BV fRKyTRTNeb8fmE+vMIaO/BJfHYoJT7mWBFdvmC+KE9mc7VZElhHtaLY2rPNw/Nxd4Qqy L36yfcVdohwmvk/T21ldrlEGZfU8FxD7XGgv+fVYm/yvPRFOqwFf/+bahyPEAyTrjuj5 cFH4VC4zHF605VJRnj8PhXxm4opuE86ABWlQe8tsOQC2ZcrU8c1hBzDFI1oz5L6OfGS3 g7nA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=pcvicRPw; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id rv27si178097ejb.720.2020.12.08.21.18.56; Tue, 08 Dec 2020 21:19:20 -0800 (PST) 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=@google.com header.s=20161025 header.b=pcvicRPw; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727218AbgLIDW7 (ORCPT + 99 others); Tue, 8 Dec 2020 22:22:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725789AbgLIDW7 (ORCPT ); Tue, 8 Dec 2020 22:22:59 -0500 Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B881DC061793 for ; Tue, 8 Dec 2020 19:22:18 -0800 (PST) Received: by mail-wr1-x443.google.com with SMTP id c1so147518wrq.6 for ; Tue, 08 Dec 2020 19:22:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=tEWLaiABhfSkvT1cOB+vXvjqCQDKr8VP2HOqqGxlXaU=; b=pcvicRPw5fYEgoz+vgcA1n+jR1qIiuAy8vpfCm59ZqryG+PILmlYM1YTrFKF/wyXpZ v1pywrJXjxoRPB8GkzlTagFXSd7kNkJGHzhriOnPCNwCDMK9i28G3mSf5EmV5tFFWE4Z 6VGGhT0BHDl63+AbvGzdMKqnakYnPxEZqOnlVrW8DEu4/xzih1VVvbKwacsHZeI7IW/b XrzN4RVG4uKI220wjgDbdVZmGVqg1S/v9pzn8EPUQiis1Dv7fNabFblXHL9iULtncz1V DdUZ7ySgDlhUQI5aYOh+BUKMieD+QCltb5ahUFhEoxsmGo1HCWbkmLUnwyv8b5KtDrFM YCkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=tEWLaiABhfSkvT1cOB+vXvjqCQDKr8VP2HOqqGxlXaU=; b=GaANNQB/IT/j5L+18ZUfb19ix995+XfpsGYrYryvrXcsNuKrfGSzw5/t3+kCGCFZNJ 6Y64zwDfCoj+VG6Y7flLlEOXb2cowuePVXUmWEO8KO13yTVtlnN0nFEaLmu0HNUjX9Kd 2ZZoQdrzvms5FngCHyzwdnSJxKrelJeX4INuSl0vPe9Eciohy8OWfled6jJQi5IoWDxY t9SOyarj0Lg6nnJJmUxwCVqcdnTQsqoxJDfT2m5mMXwiu2V9f6W10fU46by7CkSc+KPM Qnhg+dwVEYYmWrOLEHEQLg67sm4ObsGPikSWl4j+xHx2/+PTLZKCvCY8CXPLqjEIYGoL SvVQ== X-Gm-Message-State: AOAM5300TvhrEJy+mviP+fCn/A09qfaghvzz6WtwTfu1X2MpEL05KRD4 eHE5X6gauYkMZwg1kiSyEoVqRmPFmLF/R3JQFLnZJw== X-Received: by 2002:a5d:6a83:: with SMTP id s3mr242674wru.334.1607484137328; Tue, 08 Dec 2020 19:22:17 -0800 (PST) MIME-Version: 1.0 References: <20201208083510.14344-1-odin@uged.al> In-Reply-To: <20201208083510.14344-1-odin@uged.al> From: Suren Baghdasaryan Date: Tue, 8 Dec 2020 19:22:06 -0800 Message-ID: Subject: Re: [PATCH] psi: fix monitor for root cgroup To: Odin Ugedal Cc: Tejun Heo , Li Zefan , Johannes Weiner , cgroups mailinglist , LKML , dschatzberg@fb.com Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 8, 2020 at 12:35 AM Odin Ugedal wrote: > > Fix NULL pointer dereference when adding new psi monitor to the root > cgroup. PSI files for root cgroup was introduced in df5ba5be742 by using > system wide psi struct when reading, but file write/monitor was not > properly fixed. Since the PSI config for the root cgroup isn't > initialized, the current implementation tries to lock a NULL ptr, > resulting in a crash. > > Can be triggered by running this as root: > $ tee /sys/fs/cgroup/cpu.pressure <<< "some 10000 1000000" > > > Signed-off-by: Odin Ugedal > --- > kernel/cgroup/cgroup.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c > index e41c21819ba0..5d1fdf7c3ec6 100644 > --- a/kernel/cgroup/cgroup.c > +++ b/kernel/cgroup/cgroup.c > @@ -3567,6 +3567,7 @@ static ssize_t cgroup_pressure_write(struct kernfs_open_file *of, char *buf, > { > struct psi_trigger *new; > struct cgroup *cgrp; > + struct psi_group *psi; > > cgrp = cgroup_kn_lock_live(of->kn, false); > if (!cgrp) > @@ -3575,7 +3576,8 @@ static ssize_t cgroup_pressure_write(struct kernfs_open_file *of, char *buf, > cgroup_get(cgrp); > cgroup_kn_unlock(of->kn); > > - new = psi_trigger_create(&cgrp->psi, buf, nbytes, res); > + psi = cgroup_ino(cgrp) == 1 ? &psi_system : &cgrp->psi; > + new = psi_trigger_create(psi, buf, nbytes, res); > if (IS_ERR(new)) { > cgroup_put(cgrp); > return PTR_ERR(new); > -- > 2.29.2 > Reviewed-by: Suren Baghdasaryan