From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B378C433FE for ; Fri, 4 Mar 2022 18:14:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E18978D0002; Fri, 4 Mar 2022 13:14:23 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DA0AE8D0001; Fri, 4 Mar 2022 13:14:23 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C41458D0002; Fri, 4 Mar 2022 13:14:23 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0032.hostedemail.com [216.40.44.32]) by kanga.kvack.org (Postfix) with ESMTP id B15248D0001 for ; Fri, 4 Mar 2022 13:14:23 -0500 (EST) Received: from smtpin16.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 543BC8249980 for ; Fri, 4 Mar 2022 18:14:23 +0000 (UTC) X-FDA: 79207503606.16.62D6BD6 Received: from mail-yw1-f169.google.com (mail-yw1-f169.google.com [209.85.128.169]) by imf17.hostedemail.com (Postfix) with ESMTP id D2A4F40015 for ; Fri, 4 Mar 2022 18:14:22 +0000 (UTC) Received: by mail-yw1-f169.google.com with SMTP id 00721157ae682-2db2add4516so100830517b3.1 for ; Fri, 04 Mar 2022 10:14:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=roOvrpzRBBuu6X1VnPdwFDfTIg5X39LNxw0wRlde0q0=; b=iVNEGaLsI/oTddyIVfrof90wANBQmPt96gurLud4I8iwWZs9qalXO+7UcXMzuIO8tw 7aTcVPEoqPanpkJ5vOenbgiPMHiUFwBA+J6Y9a7abdyfG4RC+c7JozAJeOaNhw2+F34U M5XFCqasPH3yPIp8UOZOo5Q/FdGuuqhycyAXdMnBcIWDnLoO/PBloBz+xFZYO8JtgrCf WxenyT5JVS0BzVwF24Rgzlz8pUmwHIiDtOey4RH6ixTRoqmNjI3UUiHPqD9Ctg1H1EaT oARIUNVfbQR1mFIqSQx8YPcEFMRvWgBCJgIjGbRuJZHKPqjJ/x8SA/USAfkbkRBvkG8k htAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=roOvrpzRBBuu6X1VnPdwFDfTIg5X39LNxw0wRlde0q0=; b=akY5yJNvSSSvKyuoOWQrlWPVHxUin7kl3eUO2s8CFTAk0JpthvXGCbWIUFm/1WoR4r yA6kvoelFLKVWZqPV5l2TTgDd1bgk160BTKgo1eNpmPDQw1D61cAaq3orRjyDvyKYf3Z E08IdRmkdq9Tj9hvfkIm1hzFncw4DcQu4v90vfRdXodshq4dOp/PkbjzaXbfiTu9kYV2 JG3FbGU8y7oSeHALsD4kbNMoM+pQx5YvREJWhYpQ8sPdP6XgWV9bR/r/MSodKRIyjbcT dw+QF7uE66VedZUV2eXROZ09nx6/Dk0zlmgA0oyIotPXjrIArvvq1e2D/hu5fbd+7pgH MRkA== X-Gm-Message-State: AOAM532IeMZCNOnmurTfJPrdUIkShXqkEngbcdCBmZ1FjwUKhPbZBOgr UwAbe3qUrr4oxhRVFTjKkFWODCFp/C3DE1BKjoz2ug== X-Google-Smtp-Source: ABdhPJxV/T1UYsvhtBW/QXPyM+sLHYNKaGr4+8JbGihlbMoplFbfcKOi8eRcdtTJRFYgJ5n5azU1Y2E87jPi6aBBgSg= X-Received: by 2002:a81:9ad7:0:b0:2db:f000:32e7 with SMTP id r206-20020a819ad7000000b002dbf00032e7mr17923054ywg.412.1646417661910; Fri, 04 Mar 2022 10:14:21 -0800 (PST) MIME-Version: 1.0 References: <20220303031505.28495-1-dtcccc@linux.alibaba.com> <20220303031505.28495-2-dtcccc@linux.alibaba.com> In-Reply-To: <20220303031505.28495-2-dtcccc@linux.alibaba.com> From: Marco Elver Date: Fri, 4 Mar 2022 19:13:45 +0100 Message-ID: Subject: Re: [RFC PATCH 1/2] kfence: Allow re-enabling KFENCE after system startup To: Tianchen Ding Cc: Alexander Potapenko , Dmitry Vyukov , Andrew Morton , kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: D2A4F40015 X-Stat-Signature: fygo1qn5p7w51tyb74m1tw8aihczpziy X-Rspam-User: Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20210112 header.b=iVNEGaLs; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf17.hostedemail.com: domain of elver@google.com designates 209.85.128.169 as permitted sender) smtp.mailfrom=elver@google.com X-Rspamd-Server: rspam03 X-HE-Tag: 1646417662-307408 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Thu, 3 Mar 2022 at 04:15, Tianchen Ding wrote: > > If once KFENCE is disabled by: > echo 0 > /sys/module/kfence/parameters/sample_interval > KFENCE could never be re-enabled until next rebooting. > > Allow re-enabling it by writing a positive num to sample_interval. > > Signed-off-by: Tianchen Ding The only problem I see with this is if KFENCE was disabled because of a KFENCE_WARN_ON(). See below. > --- > mm/kfence/core.c | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/mm/kfence/core.c b/mm/kfence/core.c > index 13128fa13062..19eb123c0bba 100644 > --- a/mm/kfence/core.c > +++ b/mm/kfence/core.c > @@ -55,6 +55,7 @@ EXPORT_SYMBOL_GPL(kfence_sample_interval); /* Export for test modules. */ > #endif > #define MODULE_PARAM_PREFIX "kfence." > > +static int kfence_enable_late(void); > static int param_set_sample_interval(const char *val, const struct kernel_param *kp) > { > unsigned long num; > @@ -65,10 +66,11 @@ static int param_set_sample_interval(const char *val, const struct kernel_param > > if (!num) /* Using 0 to indicate KFENCE is disabled. */ > WRITE_ONCE(kfence_enabled, false); > - else if (!READ_ONCE(kfence_enabled) && system_state != SYSTEM_BOOTING) > - return -EINVAL; /* Cannot (re-)enable KFENCE on-the-fly. */ > > *((unsigned long *)kp->arg) = num; > + > + if (num && !READ_ONCE(kfence_enabled) && system_state != SYSTEM_BOOTING) Should probably have an 'old_sample_interval = *((unsigned long *)kp->arg)' somewhere before, and add a '&& !old_sample_interval', because if old_sample_interval!=0 then KFENCE was disabled due to a KFENCE_WARN_ON(). Also in this case, it should return -EINVAL. So you want a flow like this: old_sample_interval = ...; ... if (num && !READ_ONCE(kfence_enabled) && system_state != SYSTEM_BOOTING) return old_sample_interval ? -EINVAL : kfence_enable_late(); ... Thanks, -- Marco