Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp2268819pxm; Fri, 4 Mar 2022 12:44:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJwNF0EH8UsudqqBH3G8f90TaB+xc+LpVbZ/4cVILYbKzVHXK7REF8qKt2IoWmAal4FqA6gW X-Received: by 2002:a17:90b:33d2:b0:1bf:3b3f:cb60 with SMTP id lk18-20020a17090b33d200b001bf3b3fcb60mr208404pjb.109.1646426690671; Fri, 04 Mar 2022 12:44:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646426690; cv=none; d=google.com; s=arc-20160816; b=ezEKjAsOyS6Y0aq3Z+B73d6r9GtbVKcDv8+MXWWFvedAGQyBNfLM+QJbUhaQ5+1JPs MHOP3BxMwBAqiQ76clsdlezt2hzzHX4riEWkrvoK4veObusNpRCtMYvBqCdIdCKEfXmG 99xNSP2ki/vcr0ptGDYRKGbk5gZwkd7MqrN15oFJ1mQPwbYlJvjIooR4ZGgcHnI9BWMO ze2rBTWtGLRNG/dErZIPq7Czq+DnpMmPcuEpiTbRk0Ry42HycT72j1rDUFWIjHWdJAWz eEmHYdJzHLuD1k83A/03WUHXG4x8gtbTR3a9H1RMn6URZLtbdly57kvHgJvfzzGHYOhh MhTA== 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=roOvrpzRBBuu6X1VnPdwFDfTIg5X39LNxw0wRlde0q0=; b=fbWWCXGc5lICYBIRgNy2WlzG68QbC/myorQ5HUqS+mzewhTJtzcG5M74MEt5OwSyGY +LkqHZcKkAYQ7rU2aqhm43KholWCFheOij23KaBF+byom/gwjQHHgjZEggDfzJuc26F6 eE4C7MzogFSkGdG96xn8OpOzc7xLrADE83R0IE7+orqhw/0IGS9f381Qjtsqzl6tAMxI VvmjTxQkL1KJUZi5eOwRZpYkk2X6utN3+566mQJnd4IKmOM471XZ/rie6XV6PIy/N2vy gbReI+sGQK+UQ4YK9mGtcD0RpBO2TW2L3j2xKTII+1DONm55LxjkRoC5D0dCPLe3DNHj HPTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=iVNEGaLs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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 lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id h18-20020a63c012000000b00364d0d88389si5683874pgg.497.2022.03.04.12.44.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Mar 2022 12:44:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=iVNEGaLs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1: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: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EA8482B89F3; Fri, 4 Mar 2022 11:43:22 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241543AbiCDSPO (ORCPT + 99 others); Fri, 4 Mar 2022 13:15:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35322 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239955AbiCDSPL (ORCPT ); Fri, 4 Mar 2022 13:15:11 -0500 Received: from mail-yw1-x112e.google.com (mail-yw1-x112e.google.com [IPv6:2607:f8b0:4864:20::112e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E14351C60CE for ; Fri, 4 Mar 2022 10:14:22 -0800 (PST) Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-2dc28791ecbso86949337b3.4 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=cL4hB7fosIH9VXo8tUiKLTOoREoh1dKmH3Ub9Tzmydu4Rib/zlRo+kSJXMhGK6PZW1 6P4zlFFf27/KDP9yYIM7Yu0cFYRxI94xq/vpapwbGxB1leuMRNX4Rudp/9Qrdl8MpITB 7cNROwniCff6hRh+dh3P/57lJuTc5FLPR/flZBdD1ZDGRutyKBYMmJdr/b1DykkWOBVC DIccUTMUImJOPy78eIjZwFRTJPXJyt7wZ5RZuPty4bpK7TMUzn7C9Fw5sK94n8KbvELf LxiMdsR6NDBcR+kAjgpcE7Y7HVj3nMQizj7mU2n3Coy1r118BsmRL+UUDHfVk3IM0bml ioSw== X-Gm-Message-State: AOAM533CfjH8C2HgZBUDkQ150CxjRDyVGCn8Z7bXlIErJEF6sHZqL6Ff VBsgFP7xfE8gVWKsve1CeL7T9OphY9F0Oc86A9FAXw== 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-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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