Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp951590ybz; Wed, 22 Apr 2020 10:49:32 -0700 (PDT) X-Google-Smtp-Source: APiQypJjRSkNBS/SR9hoUQac2ym8quCqpsh+S6gryqN7cEYoSsyPaW0Emo84wjyD3rB6ysHB+58N X-Received: by 2002:aa7:cd06:: with SMTP id b6mr23680719edw.67.1587577772695; Wed, 22 Apr 2020 10:49:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587577772; cv=none; d=google.com; s=arc-20160816; b=KH6BRkVlxnmbGZgxH4x59QkVGZwe13cZ5Up1PqbfrthKb8uFTHda3q04pty7VGd4QW VGhHuGT+tNBvlKH2VeGyqoSWWo+RtTjs1CZbYzoNe3OatWIOZSllgOe4opQy85y4qOci xBalle/QnlwYBQ1/XQ6WmYzsW76Jhy63mZxA0M9FO/+6qZAG7rrnY3ytDtSYstmbgvPd W/I/K4gb5BC6dhW+/+HjpPihsRZO0ENZuBr739EcRUhzGFp/DEHJJrPs5H6ra7QpTYHN JBO2ttfZMeGSVVnjHht33bbvWAPjoenF7HBnsyY2Gxf0wtnZujIKSuXY3a6PGhr4JjQy ACeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=syCDaaxXbcOIp/TBr6Bxm8Jc/e+FlpqtJgdoj6tiTYE=; b=BuEnAoYlIrcofSr8GublFOy75CKpUj3xL4xWWFnOLSIU7LejsbzUleafwy4YXeqOZe 3BbvdcT7SAje74WwMvKWHhwhm49bcotCa9NFt3AyT3nxLTI8pTRcGULwEDRhXGQ8CRtM SuPHvEIwJnd67JhV2xwDdJGVhyLlesEwiBtxHnJhxBj1onXG0guwqeUKMZohWGdPO1FO SUDwn1xLzWWMT//TmZIUCulqtXqT9rcGY19dbFegFswfRizh5M953ODtotVN+SDwJwSx amI3i3FG5EjMW9s087umu6EL5o79Y2LBnUum2dgqvQSSx+O8x0rHoKznGJ8O1Yz5I8VF TPTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=xeCqLIAI; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x15si4207598edl.247.2020.04.22.10.49.09; Wed, 22 Apr 2020 10:49:32 -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=@kernel.org header.s=default header.b=xeCqLIAI; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726581AbgDVRqK (ORCPT + 99 others); Wed, 22 Apr 2020 13:46:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:50926 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726057AbgDVRqK (ORCPT ); Wed, 22 Apr 2020 13:46:10 -0400 Received: from willie-the-truck (236.31.169.217.in-addr.arpa [217.169.31.236]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C61B420882; Wed, 22 Apr 2020 17:46:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1587577569; bh=BZ6+GxqnknwEXTVUtex2UCZYN1TnyT2nFbqPEZvID5Q=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=xeCqLIAIf4jizG2Ckht2qwltfYk8W5t7dkqurW5+DudPXgEs52Se1z8kA6BYPOJvg zWeehGFavyojT3LhGVeOWARgj6LEsxC0YHGvVxWT4c7cDFTYsZV2It6kXt09f/QSfF HpAJI7pNWvgcdxfndttxPkynvgEj5eZLoxc5MmEQ= Date: Wed, 22 Apr 2020 18:46:02 +0100 From: Will Deacon To: Sami Tolvanen Cc: Catalin Marinas , James Morse , Steven Rostedt , Ard Biesheuvel , Mark Rutland , Masahiro Yamada , Michal Marek , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dave Martin , Kees Cook , Laura Abbott , Marc Zyngier , Masami Hiramatsu , Nick Desaulniers , Jann Horn , Miguel Ojeda , clang-built-linux@googlegroups.com, kernel-hardening@lists.openwall.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v12 03/12] scs: add support for stack usage debugging Message-ID: <20200422174602.GB3121@willie-the-truck> References: <20191018161033.261971-1-samitolvanen@google.com> <20200421021453.198187-1-samitolvanen@google.com> <20200421021453.198187-4-samitolvanen@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200421021453.198187-4-samitolvanen@google.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Apr 20, 2020 at 07:14:44PM -0700, Sami Tolvanen wrote: > Implements CONFIG_DEBUG_STACK_USAGE for shadow stacks. When enabled, > also prints out the highest shadow stack usage per process. > > Signed-off-by: Sami Tolvanen > Reviewed-by: Kees Cook > --- > kernel/scs.c | 38 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > > diff --git a/kernel/scs.c b/kernel/scs.c > index 7eea2d97bd2d..147917e31adf 100644 > --- a/kernel/scs.c > +++ b/kernel/scs.c > @@ -68,6 +68,43 @@ int scs_prepare(struct task_struct *tsk, int node) > return 0; > } > > +#ifdef CONFIG_DEBUG_STACK_USAGE > +static unsigned long __scs_used(struct task_struct *tsk) > +{ > + unsigned long *p = __scs_base(tsk); > + unsigned long *end = __scs_magic(p); > + unsigned long s = (unsigned long)p; > + > + while (p < end && READ_ONCE_NOCHECK(*p)) > + p++; > + > + return (unsigned long)p - s; > +} > + > +static void scs_check_usage(struct task_struct *tsk) > +{ > + static unsigned long highest; > + unsigned long used = __scs_used(tsk); > + unsigned long prev; > + unsigned long curr = highest; > + > + while (used > curr) { > + prev = cmpxchg(&highest, curr, used); I think this can be cmpxchg_relaxed(), since we don't care about ordering here afaict. With that: Acked-by: Will Deacon Cheers, Will