From patchwork Fri Feb 3 00:33:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52237 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp558967wrn; Thu, 2 Feb 2023 16:37:29 -0800 (PST) X-Google-Smtp-Source: AK7set/P2pOvHXf7aKrmAcpXJ95oAfL+ACDBZHlSMRbpOxgL66e2j0u9FyTifCyvd1ZM3rG/mbM6 X-Received: by 2002:a17:907:8c85:b0:7ad:aed7:a5da with SMTP id td5-20020a1709078c8500b007adaed7a5damr8373483ejc.28.1675384648953; Thu, 02 Feb 2023 16:37:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384648; cv=none; d=google.com; s=arc-20160816; b=h3dZOTCB+zU83S4o0yLih0Vy/YmXg0tS6nh/nAqqJ6RllyKKGDrUFAHy8ouH9+K7uu 4Z5CCyEU1Tq6uZAC2kwsVrbIwh7+atc6/asJktYZ27xvw4xIWoqfmgaLMny3rhAFhQRH 5JkaFUhL2A6p4bt5D+Ru7JQN0Hn/qMZAUmBOBO2uNd7TPcZ6UtrhdWoQdO0gYVpstuf/ iuvgT1C6IrnZKZ6jIw26vF0D9AtVMX/Lv5Lxn1nZaMuaK4PpeqryFBXfZHL3mZWSLWaD AEmdlioJ2oXyLLGkvxMprDQgzK4O0gKcTsS8sid7HE3ACvNLetNKAJsj43kISr5KMe+C rW4g== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0IOqoRbmZUze1RX7vUERTM7ka6X1pRCAle0j7nqG/Mc=; b=O5zPoPESUFVuseOVmG+JLcRRhUpF7d09e/FlYT03AyCb9BFZesr0jxWpgH+DdUG4PN mVfLYN6Li1ABaoWRDE4cyQupEK9jFrZ7lq7vSLHq2WpnoP0v7cR2vS31tFngQAiK5OWl GpS2gllGTiIneXNFEdXYZuFrut53928VJbyI8kiXn1KmIZkTt68S6etUu/uu8OK4oH8F YTv7z/LlUY4Qeqdg42uznWt2D6WFWMGnh8/fjfFGoMMDBudlX0IE/S+xjlYdlVj3mvdU 7bbpc7WhtYcXuhUPVfadYTgOlylDntKEgMt+jFPCKy64lF7+xCw+AbPDm5BH/6B+atUU +IFA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=aLSQfLWV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 22-20020a170906021600b0087783a6727dsi1316252ejd.790.2023.02.02.16.37.05; Thu, 02 Feb 2023 16:37:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=aLSQfLWV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233294AbjBCAfx (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:53 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232816AbjBCAfd (ORCPT ); Thu, 2 Feb 2023 19:35:33 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 883E0646AF; Thu, 2 Feb 2023 16:35:25 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 00A6FB828BF; Fri, 3 Feb 2023 00:35:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29C89C4339C; Fri, 3 Feb 2023 00:35:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384522; bh=ZnNBhw1eTbB7Y3fUOl5z/Qym4o7iK9J4ZXmSuZHiggA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aLSQfLWVTiUIc/ZzbJBkvCVJlqLuMHZk03MieS5lvDjEfvDtElIK9UXTQys5QVKsg H+1ge+znrvaC1PEv1GC2wBi8rknSksQj1ifaEt7rM1KlI0vYsgh4rYUexR7pUf2PiH J1uI48Qc/KRPCEG94Cn9UttjR/ewL5IWiXACwZoo1EA/sV5+aFuIdw0RwuFHTka211 hltfYXT8AldhEg1Xta2yVOYpcVErVAFV+pSfWidxYeLNscpOMY1cMlLpijZU7asgwa 3RqT5zYU7H/RgCJo33KzCzA5Aklld4Op0AMj9KfrtiG3UsLMBN3nOJMrD/ilXceh3p ECOUmccOaYyOQ== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Iurii Zaikin , Peter Zijlstra , Greg Kroah-Hartman , Paul Turner , Andy Shevchenko , Sebastian Reichel , Tetsuo Handa , Petr Mladek , Sergey Senozhatsky , Qing Wang , Benjamin LaHaise , Al Viro , Jan Kara , Amir Goldstein , Stephen Kitt , Antti Palosaari , Arnd Bergmann , Benjamin Herrenschmidt , Clemens Ladisch , David Airlie , Jani Nikula , Joel Becker , Joonas Lahtinen , Joseph Qi , Julia Lawall , Lukas Middendorf , Mark Fasheh , Phillip Potter , Rodrigo Vivi , Douglas Gilbert , "James E . J . Bottomley" , Jani Nikula , John Ogness , "Martin K . Petersen" , "Rafael J. Wysocki" , Steven Rostedt , Suren Baghdasaryan , "Theodore Ts'o" , Xiaoming Ni , Luis Chamberlain , Andrew Morton , Linus Torvalds Subject: [PATCH 4.14 v2 01/15] sysctl: add a new register_sysctl_init() interface Date: Thu, 2 Feb 2023 16:33:40 -0800 Message-Id: <20230203003354.85691-2-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768133670764867?= X-GMAIL-MSGID: =?utf-8?q?1756768133670764867?= From: Xiaoming Ni commit 3ddd9a808cee7284931312f2f3e854c9617f44b2 upstream. Patch series "sysctl: first set of kernel/sysctl cleanups", v2. Finally had time to respin the series of the work we had started last year on cleaning up the kernel/sysct.c kitchen sink. People keeps stuffing their sysctls in that file and this creates a maintenance burden. So this effort is aimed at placing sysctls where they actually belong. I'm going to split patches up into series as there is quite a bit of work. This first set adds register_sysctl_init() for uses of registerting a sysctl on the init path, adds const where missing to a few places, generalizes common values so to be more easy to share, and starts the move of a few kernel/sysctl.c out where they belong. The majority of rework on v2 in this first patch set is 0-day fixes. Eric Biederman's feedback is later addressed in subsequent patch sets. I'll only post the first two patch sets for now. We can address the rest once the first two patch sets get completely reviewed / Acked. This patch (of 9): The kernel/sysctl.c is a kitchen sink where everyone leaves their dirty dishes, this makes it very difficult to maintain. To help with this maintenance let's start by moving sysctls to places where they actually belong. The proc sysctl maintainers do not want to know what sysctl knobs you wish to add for your own piece of code, we just care about the core logic. Today though folks heavily rely on tables on kernel/sysctl.c so they can easily just extend this table with their needed sysctls. In order to help users move their sysctls out we need to provide a helper which can be used during code initialization. We special-case the initialization use of register_sysctl() since it *is* safe to fail, given all that sysctls do is provide a dynamic interface to query or modify at runtime an existing variable. So the use case of register_sysctl() on init should *not* stop if the sysctls don't end up getting registered. It would be counter productive to stop boot if a simple sysctl registration failed. Provide a helper for init then, and document the recommended init levels to use for callers of this routine. We will later use this in subsequent patches to start slimming down kernel/sysctl.c tables and moving sysctl registration to the code which actually needs these sysctls. [mcgrof@kernel.org: major commit log and documentation rephrasing also moved to fs/proc/proc_sysctl.c ] Link: https://lkml.kernel.org/r/20211123202347.818157-1-mcgrof@kernel.org Link: https://lkml.kernel.org/r/20211123202347.818157-2-mcgrof@kernel.org Signed-off-by: Xiaoming Ni Signed-off-by: Luis Chamberlain Reviewed-by: Kees Cook Cc: Iurii Zaikin Cc: "Eric W. Biederman" Cc: Peter Zijlstra Cc: Greg Kroah-Hartman Cc: Paul Turner Cc: Andy Shevchenko Cc: Sebastian Reichel Cc: Tetsuo Handa Cc: Petr Mladek Cc: Sergey Senozhatsky Cc: Qing Wang Cc: Benjamin LaHaise Cc: Al Viro Cc: Jan Kara Cc: Amir Goldstein Cc: Stephen Kitt Cc: Antti Palosaari Cc: Arnd Bergmann Cc: Benjamin Herrenschmidt Cc: Clemens Ladisch Cc: David Airlie Cc: Jani Nikula Cc: Joel Becker Cc: Joonas Lahtinen Cc: Joseph Qi Cc: Julia Lawall Cc: Lukas Middendorf Cc: Mark Fasheh Cc: Phillip Potter Cc: Rodrigo Vivi Cc: Douglas Gilbert Cc: James E.J. Bottomley Cc: Jani Nikula Cc: John Ogness Cc: Martin K. Petersen Cc: "Rafael J. Wysocki" Cc: Steven Rostedt (VMware) Cc: Suren Baghdasaryan Cc: "Theodore Ts'o" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Eric Biggers --- fs/proc/proc_sysctl.c | 33 +++++++++++++++++++++++++++++++++ include/linux/sysctl.h | 3 +++ 2 files changed, 36 insertions(+) diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index 12bac452738df..f4b46f796901c 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -13,6 +13,7 @@ #include #include #include +#include #include "internal.h" static const struct dentry_operations proc_sys_dentry_operations; @@ -1370,6 +1371,38 @@ struct ctl_table_header *register_sysctl(const char *path, struct ctl_table *tab } EXPORT_SYMBOL(register_sysctl); +/** + * __register_sysctl_init() - register sysctl table to path + * @path: path name for sysctl base + * @table: This is the sysctl table that needs to be registered to the path + * @table_name: The name of sysctl table, only used for log printing when + * registration fails + * + * The sysctl interface is used by userspace to query or modify at runtime + * a predefined value set on a variable. These variables however have default + * values pre-set. Code which depends on these variables will always work even + * if register_sysctl() fails. If register_sysctl() fails you'd just loose the + * ability to query or modify the sysctls dynamically at run time. Chances of + * register_sysctl() failing on init are extremely low, and so for both reasons + * this function does not return any error as it is used by initialization code. + * + * Context: Can only be called after your respective sysctl base path has been + * registered. So for instance, most base directories are registered early on + * init before init levels are processed through proc_sys_init() and + * sysctl_init(). + */ +void __init __register_sysctl_init(const char *path, struct ctl_table *table, + const char *table_name) +{ + struct ctl_table_header *hdr = register_sysctl(path, table); + + if (unlikely(!hdr)) { + pr_err("failed when register_sysctl %s to %s\n", table_name, path); + return; + } + kmemleak_not_leak(hdr); +} + static char *append_path(const char *path, char *pos, const char *name) { int namelen; diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index b769ecfcc3bd4..0a980aecc8f02 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -198,6 +198,9 @@ struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path, void unregister_sysctl_table(struct ctl_table_header * table); extern int sysctl_init(void); +extern void __register_sysctl_init(const char *path, struct ctl_table *table, + const char *table_name); +#define register_sysctl_init(path, table) __register_sysctl_init(path, table, #table) extern struct ctl_table sysctl_mount_point[]; From patchwork Fri Feb 3 00:33:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52234 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp558867wrn; Thu, 2 Feb 2023 16:37:12 -0800 (PST) X-Google-Smtp-Source: AK7set+tG7r970roe1yfBOH+nSOjsIK4z0m1JhQ//xfv4+Z2Lel1EUrwIdt0KXj+VduegLwAKETR X-Received: by 2002:a17:903:41ca:b0:196:6b7d:e6eb with SMTP id u10-20020a17090341ca00b001966b7de6ebmr9780020ple.59.1675384632574; Thu, 02 Feb 2023 16:37:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384632; cv=none; d=google.com; s=arc-20160816; b=lit7PayUD7yFHXCQ3Gl0OdXYiEo+qW6eJMyRGKz1J9Y1D+tUOcJsUfShnCGPB6Shp6 mAo4lLwhxGRDAqekn6SsTO0oRwxbLFAy5WKQGkzT4v+gxpbXF/b76caMF8aSs9E32F+I Jqt/XGPTk2H/opuKZJv10Q7IRa7EI6DivgOf60XFaI9yGOgjt9yjFfw4B9OyU12X8tpo txOFw0FYiqPfuk+QW8IxkWt7HkArwfvM8NABpbMX8Mw6N6EYAC+/trB82MijBiwR4awD MIbgFDz/T/Yi5HdR/+I6PFr8Vi2sniJIY5YU+Oe8oWqwIDXGaMmTlhW9bKCzykjGyjcq RS1g== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gckCJgwrDWmh+2yXST9/kVftqSIFB2HBaiGP/gtc9u4=; b=EwM0FapEcIp3FpOIpuMsAu9Sqzaro+EbKQwg5EKinCMSziTVNCIt0Iuo5+s9IKaf82 kxcRvvV56Ie8RlmDUdXZMmWsGBUlyuG9gFI6+5tFST34AN3kuoPlo7n/OL7eANzGazVe ubWbwqSKg6lAix325fofqW8yXgHoiLhPbMyFejH+U/Fiekl2fM9eBMnY2LF769dv+GQU tjxfknDg+wgPkjuT4O761cVPf16kOvXNa+Z3uUPtsEomOEMZz10gacns6mMiKbk/WqeG RTkN7b7PIJKHbMx/Gx1+s3Is6ydu10qg2zxpW3uMjmJs9d2GyqGAvaDqCOGSqIfSsSfy VtiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qjkssc12; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b2-20020a170903228200b001944785f248si897022plh.84.2023.02.02.16.37.00; Thu, 02 Feb 2023 16:37:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qjkssc12; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233090AbjBCAfg (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232714AbjBCAf2 (ORCPT ); Thu, 2 Feb 2023 19:35:28 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47A2B64682; Thu, 2 Feb 2023 16:35:24 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D431E61D11; Fri, 3 Feb 2023 00:35:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id C216BC433D2; Fri, 3 Feb 2023 00:35:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384523; bh=gNpeNx44gA3Dz1NMaDk9iVn8+H0TL/VgfW5SQ5YlGbY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qjkssc12B6Z7Jid7N0PlwYqWkcRej2GRbrk/JGUFYC4JYRa4PYiI9FJcmENCVu5zO YNVBCkCFntvNb7VCkeDOUtbJadIRNuy0tV7H/xRIK4tbtRkDZs8BlqTDuDFnaFslt2 HucE4jB3y+JyPeEtHifi/VIy5dqEMI4zR4yplR9KiwZmIOif7hIiaORmM8GZCgB8++ IxmFsADCiEsHkXrAL6v5rorsLr3TLJhg/As0WKtGqNartHy9GbigQX/a1rWE0p0ao1 +Gz0/+22cjlqnNiLbjVrgdeFd7aDJhLdI6lgyVRMJCJYYepBEEMCnLwUZzJpfEP0Ki 8kn77abxnAi5g== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Andrey Ryabinin , Baoquan He , Jonathan Corbet , Xuefeng Li , Tiezhu Yang , Marco Elver , Andrew Morton , Linus Torvalds Subject: [PATCH 4.14 v2 02/15] panic: unset panic_on_warn inside panic() Date: Thu, 2 Feb 2023 16:33:41 -0800 Message-Id: <20230203003354.85691-3-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768116688610950?= X-GMAIL-MSGID: =?utf-8?q?1756768116688610950?= From: Tiezhu Yang commit 1a2383e8b84c0451fd9b1eec3b9aab16f30b597c upstream. In the current code, the following three places need to unset panic_on_warn before calling panic() to avoid recursive panics: kernel/kcsan/report.c: print_report() kernel/sched/core.c: __schedule_bug() mm/kfence/report.c: kfence_report_error() In order to avoid copy-pasting "panic_on_warn = 0" all over the places, it is better to move it inside panic() and then remove it from the other places. Link: https://lkml.kernel.org/r/1644324666-15947-4-git-send-email-yangtiezhu@loongson.cn Signed-off-by: Tiezhu Yang Reviewed-by: Marco Elver Cc: Andrey Ryabinin Cc: Baoquan He Cc: Jonathan Corbet Cc: Xuefeng Li Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Eric Biggers --- kernel/panic.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/kernel/panic.c b/kernel/panic.c index 207ceac3a432e..bd7c3ea3bf1e6 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -139,6 +139,16 @@ void panic(const char *fmt, ...) int old_cpu, this_cpu; bool _crash_kexec_post_notifiers = crash_kexec_post_notifiers; + if (panic_on_warn) { + /* + * This thread may hit another WARN() in the panic path. + * Resetting this prevents additional WARN() from panicking the + * system on this thread. Other threads are blocked by the + * panic_mutex in panic(). + */ + panic_on_warn = 0; + } + /* * Disable local interrupts. This will prevent panic_smp_self_stop * from deadlocking the first cpu that invokes the panic, since @@ -536,16 +546,8 @@ void __warn(const char *file, int line, void *caller, unsigned taint, if (args) vprintk(args->fmt, args->args); - if (panic_on_warn) { - /* - * This thread may hit another WARN() in the panic path. - * Resetting this prevents additional WARN() from panicking the - * system on this thread. Other threads are blocked by the - * panic_mutex in panic(). - */ - panic_on_warn = 0; + if (panic_on_warn) panic("panic_on_warn set ...\n"); - } print_modules(); From patchwork Fri Feb 3 00:33:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52241 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559018wrn; Thu, 2 Feb 2023 16:37:36 -0800 (PST) X-Google-Smtp-Source: AK7set8G8kZioaQN7lOh9GlnoG+GDlffVnDAxBsyxmJs9CepT3mql8MhNgQRmCjDeWzXm2L1VWEK X-Received: by 2002:a17:907:b60a:b0:86f:de0b:b066 with SMTP id vl10-20020a170907b60a00b0086fde0bb066mr8226220ejc.76.1675384656597; Thu, 02 Feb 2023 16:37:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384656; cv=none; d=google.com; s=arc-20160816; b=nQvSYaKsH4msvxzOjm747FDkB1oHOeu4JgUK6ZFyk9xf5Wz4NUFCT2bHwF2g15+9/1 xwAM3ePIR6i5b3/wpZxGNGGERksH53pb6XakG6HpuxACkdosJjsuEU+YM9ODMDQOjXGJ RKtoLAQK/Eu2f0t8Ap9TLKvXMRL+bK8IIeDnFgvJiy3GwxPp468/rLGZOD8V4wGm0Qju fq0Awz1puOcMJ11J9vwE1T2JNAHJiPl+gMCx4Xh7KgTEO0XjJsWNiqCn7WqKizXViPy1 eaKqcbXgTDovylUL07jNVp57NxTUPThp8F9z0GNlciA0RpOlGsLIl00rc2Mg2kXCiVNS faOA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ixI03v0NOFJbRmU7DU5shj+MhZgEfAPf0UmIZ56b/Bk=; b=Neklum0fyPRtQL9IiXgC13TpScP+PzUdTemFg2r0lI5NeypwxAZlQve5pHgU7Q59Tp R+sR5v5jrlcl7sIeHChaAglAQ4idKAi74JRWOvh5RPvMwCM3S3RgiuwpytWMzuoHZw41 Ad3Qr8pj8Q6OraFwzM5smLmzG9ArHkhiJxNO9PIfC/4rEVEjZfkXUAE23vicsuhhFFB5 B0QO1fce/hZFfxa/wi18iQ3yxIaMx6pvKFHyYuvt68FiuorWtbAXnyzpaSr0Pa97Q4De E7DEOKOVTNrJkTkQNQ54cOxxrS2jtnHYWydRgPTVZ5Kfby47MYHiBTazfsWzxZNu+Kmu yWSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="BZ/Vn/S5"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id uo32-20020a170907cc2000b0087cc469b193si1130375ejc.836.2023.02.02.16.37.12; Thu, 02 Feb 2023 16:37:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="BZ/Vn/S5"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233464AbjBCAf7 (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60810 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232978AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AE236778F; Thu, 2 Feb 2023 16:35:26 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 15B1AB828E1; Fri, 3 Feb 2023 00:35:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6FD33C4339B; Fri, 3 Feb 2023 00:35:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384523; bh=CPC3rnkJBI+2seUXRbQ6cBmh4fgZrX70sHReKY5rEZo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BZ/Vn/S5N7RYCQoF/84tTLDBcBFDVe1WwBvLn7OfAdwlgQ/5Gs3OIMbd5luxiLe/6 gItfunfz3W4g5CWkJc1vo952hHcxZfwanARZo9oVofk/eA7N3Z1ZVuChn0Y3s+1ASE j1/4L9bqItOXOXly1tVDv2LXL6nkmvDHzo4iZC2YpLTE2dCH2rFM0ngvu6n9oAxI7v kXpzJFraXvC4RGc1Y1gI7y3lkLigsNwkN/dyPCAR+si04QfLExMwOVudssMX6Kh6TC ATXhW91G8XBK6dJUQ1iiyUbm4+HAwu1m9s1ybq1a/QSaOdx7jMCj04bxhs+suRiEk+ jh67AF9zxtdiQ== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 4.14 v2 03/15] exit: Add and use make_task_dead. Date: Thu, 2 Feb 2023 16:33:42 -0800 Message-Id: <20230203003354.85691-4-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768141692593676?= X-GMAIL-MSGID: =?utf-8?q?1756768141692593676?= From: "Eric W. Biederman" commit 0e25498f8cd43c1b5aa327f373dd094e9a006da7 upstream. There are two big uses of do_exit. The first is it's design use to be the guts of the exit(2) system call. The second use is to terminate a task after something catastrophic has happened like a NULL pointer in kernel code. Add a function make_task_dead that is initialy exactly the same as do_exit to cover the cases where do_exit is called to handle catastrophic failure. In time this can probably be reduced to just a light wrapper around do_task_dead. For now keep it exactly the same so that there will be no behavioral differences introducing this new concept. Replace all of the uses of do_exit that use it for catastraphic task cleanup with make_task_dead to make it clear what the code is doing. As part of this rename rewind_stack_do_exit rewind_stack_and_make_dead. Signed-off-by: "Eric W. Biederman" Signed-off-by: Eric Biggers --- arch/alpha/kernel/traps.c | 6 +++--- arch/alpha/mm/fault.c | 2 +- arch/arm/kernel/traps.c | 2 +- arch/arm/mm/fault.c | 2 +- arch/arm64/kernel/traps.c | 2 +- arch/arm64/mm/fault.c | 2 +- arch/h8300/kernel/traps.c | 2 +- arch/h8300/mm/fault.c | 2 +- arch/hexagon/kernel/traps.c | 2 +- arch/ia64/kernel/mca_drv.c | 2 +- arch/ia64/kernel/traps.c | 2 +- arch/ia64/mm/fault.c | 2 +- arch/m68k/kernel/traps.c | 2 +- arch/m68k/mm/fault.c | 2 +- arch/microblaze/kernel/exceptions.c | 4 ++-- arch/mips/kernel/traps.c | 2 +- arch/nios2/kernel/traps.c | 4 ++-- arch/openrisc/kernel/traps.c | 2 +- arch/parisc/kernel/traps.c | 2 +- arch/powerpc/kernel/traps.c | 2 +- arch/s390/kernel/dumpstack.c | 2 +- arch/s390/kernel/nmi.c | 2 +- arch/sh/kernel/traps.c | 2 +- arch/sparc/kernel/traps_32.c | 4 +--- arch/sparc/kernel/traps_64.c | 4 +--- arch/x86/entry/entry_32.S | 6 +++--- arch/x86/entry/entry_64.S | 6 +++--- arch/x86/kernel/dumpstack.c | 4 ++-- arch/xtensa/kernel/traps.c | 2 +- include/linux/sched/task.h | 1 + kernel/exit.c | 9 +++++++++ tools/objtool/check.c | 3 ++- 32 files changed, 50 insertions(+), 43 deletions(-) diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index f43bd05dede26..6a45f392c6728 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c @@ -192,7 +192,7 @@ die_if_kernel(char * str, struct pt_regs *regs, long err, unsigned long *r9_15) local_irq_enable(); while (1); } - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } #ifndef CONFIG_MATHEMU @@ -609,7 +609,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg, printk("Bad unaligned kernel access at %016lx: %p %lx %lu\n", pc, va, opcode, reg); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); got_exception: /* Ok, we caught the exception, but we don't want it. Is there @@ -664,7 +664,7 @@ do_entUna(void * va, unsigned long opcode, unsigned long reg, local_irq_enable(); while (1); } - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } /* diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index e9392302c5dab..a85c1b18d0bc9 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c @@ -206,7 +206,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr, printk(KERN_ALERT "Unable to handle kernel paging request at " "virtual address %016lx\n", address); die_if_kernel("Oops", regs, cause, (unsigned long*)regs - 16); - do_exit(SIGKILL); + make_task_dead(SIGKILL); /* We ran out of memory, or some other thing happened to us that made us unable to handle the page fault gracefully. */ diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 7d81d4a1f5a9c..df7a92c5df6c5 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c @@ -342,7 +342,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, int signr) if (panic_on_oops) panic("Fatal exception"); if (signr) - do_exit(signr); + make_task_dead(signr); } /* diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 9bb446cc135d1..45e73596b524c 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -150,7 +150,7 @@ __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr, show_pte(mm, addr); die("Oops", regs, fsr); bust_spinlocks(0); - do_exit(SIGKILL); + make_task_dead(SIGKILL); } /* diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index b30d23431fe11..ee19e6463e5a4 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -223,7 +223,7 @@ void die(const char *str, struct pt_regs *regs, int err) raw_spin_unlock_irqrestore(&die_lock, flags); if (ret != NOTIFY_STOP) - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } void arm64_notify_die(const char *str, struct pt_regs *regs, diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 617787e4081f1..d191b046d4c18 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -288,7 +288,7 @@ static void __do_kernel_fault(unsigned long addr, unsigned int esr, show_pte(addr); die("Oops", regs, esr); bust_spinlocks(0); - do_exit(SIGKILL); + make_task_dead(SIGKILL); } /* diff --git a/arch/h8300/kernel/traps.c b/arch/h8300/kernel/traps.c index e47a9e0dc278f..a284c126f07a6 100644 --- a/arch/h8300/kernel/traps.c +++ b/arch/h8300/kernel/traps.c @@ -110,7 +110,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err) dump(fp); spin_unlock_irq(&die_lock); - do_exit(SIGSEGV); + make_dead_task(SIGSEGV); } static int kstack_depth_to_print = 24; diff --git a/arch/h8300/mm/fault.c b/arch/h8300/mm/fault.c index fabffb83930af..a8d8fc63780e4 100644 --- a/arch/h8300/mm/fault.c +++ b/arch/h8300/mm/fault.c @@ -52,7 +52,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address, printk(" at virtual address %08lx\n", address); if (!user_mode(regs)) die("Oops", regs, error_code); - do_exit(SIGKILL); + make_dead_task(SIGKILL); return 1; } diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c index 2942a9204a9aa..797608772f8a4 100644 --- a/arch/hexagon/kernel/traps.c +++ b/arch/hexagon/kernel/traps.c @@ -234,7 +234,7 @@ int die(const char *str, struct pt_regs *regs, long err) panic("Fatal exception"); oops_exit(); - do_exit(err); + make_dead_task(err); return 0; } diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index 3503d488e9b3f..7c9d63ef1cb28 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c @@ -176,7 +176,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr) spin_unlock(&mca_bh_lock); /* This process is about to be killed itself */ - do_exit(SIGKILL); + make_task_dead(SIGKILL); } /** diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index 6d4e76a4267f1..2bab65c10d236 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c @@ -85,7 +85,7 @@ die (const char *str, struct pt_regs *regs, long err) if (panic_on_oops) panic("Fatal exception"); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); return 0; } diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index dfdc152d6737b..23f23e051ee24 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -300,7 +300,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re regs = NULL; bust_spinlocks(0); if (regs) - do_exit(SIGKILL); + make_task_dead(SIGKILL); return; out_of_memory: diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index c1cc4e99aa945..5c72deb117a8e 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c @@ -1141,7 +1141,7 @@ void die_if_kernel (char *str, struct pt_regs *fp, int nr) pr_crit("%s: %08x\n", str, nr); show_registers(fp); add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } asmlinkage void set_esp0(unsigned long ssp) diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index 127d7c1f2090c..4ef6057592f12 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c @@ -50,7 +50,7 @@ int send_fault_sig(struct pt_regs *regs) pr_alert("Unable to handle kernel access"); pr_cont(" at virtual address %p\n", siginfo.si_addr); die_if_kernel("Oops", regs, 0 /*error_code*/); - do_exit(SIGKILL); + make_task_dead(SIGKILL); } return 1; diff --git a/arch/microblaze/kernel/exceptions.c b/arch/microblaze/kernel/exceptions.c index e6f338d0496bb..3066d7fe484bd 100644 --- a/arch/microblaze/kernel/exceptions.c +++ b/arch/microblaze/kernel/exceptions.c @@ -44,10 +44,10 @@ void die(const char *str, struct pt_regs *fp, long err) pr_warn("Oops: %s, sig: %ld\n", str, err); show_regs(fp); spin_unlock_irq(&die_lock); - /* do_exit() should take care of panic'ing from an interrupt + /* make_task_dead() should take care of panic'ing from an interrupt * context so we don't handle it here */ - do_exit(err); + make_task_dead(err); } /* for user application debugging */ diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index abbc64788008a..a8f166ff2762b 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c @@ -414,7 +414,7 @@ void __noreturn die(const char *str, struct pt_regs *regs) if (regs && kexec_should_crash(current)) crash_kexec(regs); - do_exit(sig); + make_task_dead(sig); } extern struct exception_table_entry __start___dbe_table[]; diff --git a/arch/nios2/kernel/traps.c b/arch/nios2/kernel/traps.c index 8184e7d6b3857..5dadd36d13ce3 100644 --- a/arch/nios2/kernel/traps.c +++ b/arch/nios2/kernel/traps.c @@ -43,10 +43,10 @@ void die(const char *str, struct pt_regs *regs, long err) show_regs(regs); spin_unlock_irq(&die_lock); /* - * do_exit() should take care of panic'ing from an interrupt + * make_task_dead() should take care of panic'ing from an interrupt * context so we don't handle it here */ - do_exit(err); + make_task_dead(err); } void _exception(int signo, struct pt_regs *regs, int code, unsigned long addr) diff --git a/arch/openrisc/kernel/traps.c b/arch/openrisc/kernel/traps.c index 0d44e8007ad6e..a8fb061f1c888 100644 --- a/arch/openrisc/kernel/traps.c +++ b/arch/openrisc/kernel/traps.c @@ -265,7 +265,7 @@ void die(const char *str, struct pt_regs *regs, long err) __asm__ __volatile__("l.nop 1"); do {} while (1); #endif - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } /* This is normally the 'Oops' routine */ diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 346456c43aa0b..36582e23f9b9d 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c @@ -290,7 +290,7 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err) panic("Fatal exception"); oops_exit(); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } /* gdb uses break 4,8 */ diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index 05c1aabad01c6..a507a6874d420 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c @@ -211,7 +211,7 @@ static void oops_end(unsigned long flags, struct pt_regs *regs, panic("Fatal exception in interrupt"); if (panic_on_oops) panic("Fatal exception"); - do_exit(signr); + make_task_dead(signr); } NOKPROBE_SYMBOL(oops_end); diff --git a/arch/s390/kernel/dumpstack.c b/arch/s390/kernel/dumpstack.c index 2aa545dca4d53..d9513a9f0db12 100644 --- a/arch/s390/kernel/dumpstack.c +++ b/arch/s390/kernel/dumpstack.c @@ -186,5 +186,5 @@ void die(struct pt_regs *regs, const char *str) if (panic_on_oops) panic("Fatal exception: panic_on_oops"); oops_exit(); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } diff --git a/arch/s390/kernel/nmi.c b/arch/s390/kernel/nmi.c index 31d03a84126c5..5dca748d3815c 100644 --- a/arch/s390/kernel/nmi.c +++ b/arch/s390/kernel/nmi.c @@ -94,7 +94,7 @@ void s390_handle_mcck(void) "malfunction (code 0x%016lx).\n", mcck.mcck_code); printk(KERN_EMERG "mcck: task: %s, pid: %d.\n", current->comm, current->pid); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } } EXPORT_SYMBOL_GPL(s390_handle_mcck); diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 8b49cced663dc..5fafbef7849b1 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c @@ -57,7 +57,7 @@ void die(const char *str, struct pt_regs *regs, long err) if (panic_on_oops) panic("Fatal exception"); - do_exit(SIGSEGV); + make_task_dead(SIGSEGV); } void die_if_kernel(const char *str, struct pt_regs *regs, long err) diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c index b1ed763e47877..fb0576f3b1de0 100644 --- a/arch/sparc/kernel/traps_32.c +++ b/arch/sparc/kernel/traps_32.c @@ -86,9 +86,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs) } printk("Instruction DUMP:"); instruction_dump ((unsigned long *) regs->pc); - if(regs->psr & PSR_PS) - do_exit(SIGKILL); - do_exit(SIGSEGV); + make_task_dead((regs->psr & PSR_PS) ? SIGKILL : SIGSEGV); } void do_hw_interrupt(struct pt_regs *regs, unsigned long type) diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index 6ab9b87dbca8c..cfc06eeeb4f35 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c @@ -2547,9 +2547,7 @@ void __noreturn die_if_kernel(char *str, struct pt_regs *regs) } if (panic_on_oops) panic("Fatal exception"); - if (regs->tstate & TSTATE_PRIV) - do_exit(SIGKILL); - do_exit(SIGSEGV); + make_task_dead((regs->tstate & TSTATE_PRIV)? SIGKILL : SIGSEGV); } EXPORT_SYMBOL(die_if_kernel); diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S index dbcea4281c309..1fdedb2eaef35 100644 --- a/arch/x86/entry/entry_32.S +++ b/arch/x86/entry/entry_32.S @@ -1068,13 +1068,13 @@ ENTRY(async_page_fault) END(async_page_fault) #endif -ENTRY(rewind_stack_do_exit) +ENTRY(rewind_stack_and_make_dead) /* Prevent any naive code from trying to unwind to our caller. */ xorl %ebp, %ebp movl PER_CPU_VAR(cpu_current_top_of_stack), %esi leal -TOP_OF_KERNEL_STACK_PADDING-PTREGS_SIZE(%esi), %esp - call do_exit + call make_task_dead 1: jmp 1b -END(rewind_stack_do_exit) +END(rewind_stack_and_make_dead) diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S index 637a23d404e95..b57f15b51ed52 100644 --- a/arch/x86/entry/entry_64.S +++ b/arch/x86/entry/entry_64.S @@ -1672,7 +1672,7 @@ ENTRY(ignore_sysret) sysret END(ignore_sysret) -ENTRY(rewind_stack_do_exit) +ENTRY(rewind_stack_and_make_dead) UNWIND_HINT_FUNC /* Prevent any naive code from trying to unwind to our caller. */ xorl %ebp, %ebp @@ -1681,5 +1681,5 @@ ENTRY(rewind_stack_do_exit) leaq -PTREGS_SIZE(%rax), %rsp UNWIND_HINT_REGS - call do_exit -END(rewind_stack_do_exit) + call make_task_dead +END(rewind_stack_and_make_dead) diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index 224de37821e4e..92585a755410b 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c @@ -271,7 +271,7 @@ unsigned long oops_begin(void) EXPORT_SYMBOL_GPL(oops_begin); NOKPROBE_SYMBOL(oops_begin); -void __noreturn rewind_stack_do_exit(int signr); +void __noreturn rewind_stack_and_make_dead(int signr); void oops_end(unsigned long flags, struct pt_regs *regs, int signr) { @@ -303,7 +303,7 @@ void oops_end(unsigned long flags, struct pt_regs *regs, int signr) * reuse the task stack and that existing poisons are invalid. */ kasan_unpoison_task_stack(current); - rewind_stack_do_exit(signr); + rewind_stack_and_make_dead(signr); } NOKPROBE_SYMBOL(oops_end); diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index 2986bc88a18e7..09ba7436d1bd0 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c @@ -547,5 +547,5 @@ void die(const char * str, struct pt_regs * regs, long err) if (panic_on_oops) panic("Fatal exception"); - do_exit(err); + make_task_dead(err); } diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index c3d157a370734..3ef0986cf0ea3 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h @@ -36,6 +36,7 @@ extern int sched_fork(unsigned long clone_flags, struct task_struct *p); extern void sched_dead(struct task_struct *p); void __noreturn do_task_dead(void); +void __noreturn make_task_dead(int signr); extern void proc_caches_init(void); diff --git a/kernel/exit.c b/kernel/exit.c index 9e70577b818ab..1e778b88fa3fe 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -920,6 +920,15 @@ void __noreturn do_exit(long code) } EXPORT_SYMBOL_GPL(do_exit); +void __noreturn make_task_dead(int signr) +{ + /* + * Take the task off the cpu after something catastrophic has + * happened. + */ + do_exit(signr); +} + void complete_and_exit(struct completion *comp, long code) { if (comp) diff --git a/tools/objtool/check.c b/tools/objtool/check.c index 2c8e2dae17016..9048b02b54474 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -159,6 +159,7 @@ static int __dead_end_function(struct objtool_file *file, struct symbol *func, "panic", "do_exit", "do_task_dead", + "make_task_dead", "__module_put_and_exit", "complete_and_exit", "kvm_spurious_fault", @@ -166,7 +167,7 @@ static int __dead_end_function(struct objtool_file *file, struct symbol *func, "lbug_with_loc", "fortify_panic", "machine_real_restart", - "rewind_stack_do_exit", + "rewind_stack_and_make_dead" }; if (func->bind == STB_WEAK) From patchwork Fri Feb 3 00:33:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52233 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp558806wrn; Thu, 2 Feb 2023 16:37:05 -0800 (PST) X-Google-Smtp-Source: AK7set8YL8IXcPZa8FsdQt11/Zk3fl3bldTVgB+PVJCyJuRP0ptCESckXQ2e7Uxa+U25pdOGV49f X-Received: by 2002:a17:903:2288:b0:198:dd3f:2846 with SMTP id b8-20020a170903228800b00198dd3f2846mr658721plh.29.1675384624748; Thu, 02 Feb 2023 16:37:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384624; cv=none; d=google.com; s=arc-20160816; b=AF9OJG7fmNC6MSvU1mXaNsDv53bjfbUFXPz+EXPB3c6rJ9kImY8uQaaKLHVQKm9EcP m9Fvo9Zds4rudRK2UwTJnAV0tOIGdrorjplVNdDWDC2U/oyO/up65eNB+upI2Z361UhX AAMDti7W3oflUwsyJIzcYZS8L3s3BTwm/0dY7Wk+g+uLcmkIBKmEEXVPp0OZX2eGGW+w fjfwowmglNcetdNUcS1tkDL/a6oeYAtXs1dQ89seyxiNPuWaNktD8ZV/4vsjKtmr1HUz vSfmVzYv8UWmHHkjMY4dcoDsO9JDsWSrcyqeggR8qTXow3FFKWPUZvtnBlh7a9nkZ6Vi 3MDA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=1Ag1Z0QIdRQ5HukYjNwzJPEFWIlH7UcHVh4oSz/tNXs=; b=cIZh+11w3ygpED4eS47Zl7af9nf3vHLx3H28Zb4ncGOvF8BJ1cMvTsCkTrgoAycuMu oIXQUSP5ncTzBx1ZNUbXDQ/yj7CZt/cpTt7c7cZfZEB3pWCF6L71JNboOf9hap4eEvYH oAdh6E7xvFF+h0ic9UcVOfwLhGIQM5I45WHrcsPChQVUKmQWVU3Ay5a9hgi+vzN4d6EW ZeqBOds7mVM7dVPfLpsbU2nahDNrOE7T9UCmRuHunMkUmPJmVPasSLxsDaSsNBxByyOi awBnLju7nz3GgL644g+AFf2JRjndWJIKfwfGJq//4+X5nZj8XJaIIu8ysUhVuPzAYm75 gkaw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ZzWVcBWp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q2-20020a170902dac200b00194a6e1b334si915863plx.327.2023.02.02.16.36.51; Thu, 02 Feb 2023 16:37:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ZzWVcBWp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233223AbjBCAfj (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230233AbjBCAfa (ORCPT ); Thu, 2 Feb 2023 19:35:30 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C85856384F; Thu, 2 Feb 2023 16:35:24 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6395061D4A; Fri, 3 Feb 2023 00:35:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id E09D1C433A8; Fri, 3 Feb 2023 00:35:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384524; bh=Q1iK07+TfUGftVW45xfnQtsOGOOjDYaWhjdzlKJkRcs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZzWVcBWpbkKGjiEs5IuYVj2pTpiqZIxYjIxFTadGmuWgHfCQA/1/nDEHB8WwXqefI YaUZjh0KqqrEP0Z9OrUmra9UHr9i35yn7IEafLLmVzz6N1zyuqr6VPermlWzh7wMUp 7pO+p2n0zmGFaH7TZA/3DXS5BngX1xxzkmQFR/3SAAw3rCcWZlfHbZ0SfYqWYXk2bL goyxJTwuhK4B+Ts6VUFrNbJe3Te2J9V2kxpLS6JBGPk2Z/NrGUOPzGPu6SKhHUlwgm lhFLQDDuidFNimVBYZHYNpwKOfsYUJ7C6YJEvTI3lMAe4Sgics7lA1ohA/Yr1q1ZVs 0ayFrusU69Ztg== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, kernel test robot Subject: [PATCH 4.14 v2 04/15] objtool: Add a missing comma to avoid string concatenation Date: Thu, 2 Feb 2023 16:33:43 -0800 Message-Id: <20230203003354.85691-5-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768108391571974?= X-GMAIL-MSGID: =?utf-8?q?1756768108391571974?= From: "Eric W. Biederman" commit 1fb466dff904e4a72282af336f2c355f011eec61 upstream. Recently the kbuild robot reported two new errors: >> lib/kunit/kunit-example-test.o: warning: objtool: .text.unlikely: unexpected end of section >> arch/x86/kernel/dumpstack.o: warning: objtool: oops_end() falls through to next function show_opcodes() I don't know why they did not occur in my test setup but after digging it I realized I had accidentally dropped a comma in tools/objtool/check.c when I renamed rewind_stack_do_exit to rewind_stack_and_make_dead. Add that comma back to fix objtool errors. Link: https://lkml.kernel.org/r/202112140949.Uq5sFKR1-lkp@intel.com Fixes: 0e25498f8cd4 ("exit: Add and use make_task_dead.") Reported-by: kernel test robot Signed-off-by: "Eric W. Biederman" Signed-off-by: Eric Biggers --- tools/objtool/check.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/objtool/check.c b/tools/objtool/check.c index 9048b02b54474..e93c061654a79 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -167,7 +167,7 @@ static int __dead_end_function(struct objtool_file *file, struct symbol *func, "lbug_with_loc", "fortify_panic", "machine_real_restart", - "rewind_stack_and_make_dead" + "rewind_stack_and_make_dead", }; if (func->bind == STB_WEAK) From patchwork Fri Feb 3 00:33:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52235 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp558960wrn; Thu, 2 Feb 2023 16:37:27 -0800 (PST) X-Google-Smtp-Source: AK7set8jt/KmdXJBkwsG6mA1WlShkWAOCgUrM6GTvZZ+GhuM3m0v2MtN08bHL6RadI8kzvMRq33c X-Received: by 2002:a17:906:6d42:b0:88c:3a48:715b with SMTP id a2-20020a1709066d4200b0088c3a48715bmr8179093ejt.30.1675384647644; Thu, 02 Feb 2023 16:37:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384647; cv=none; d=google.com; s=arc-20160816; b=EmcJuprAPyYGj4IuCzSjQ9tUAHbkR/TYDjo7vXUGwracVhSAMGv3PngPErBXvin+eY kVnlNSkhTJm+qoztBQBV2829Xp+j6bO3hHg70fF3b+lD8g98EU0yJcB6JFaW60c8x9Hb i7rfJlxvGCF+ouEptaObexj1jSPfbM4quMSrztKH94/HPf9dLoqX2IGZy8+H81GqAwTR RNexjfvnh2XothrgrCCOaegqkq7AL311tmKtwsXfmdW6ySKMA6J2IRkYH24t1tedkB1o WfqFDU1tayM3kWa7i+62O16Mg96z8BoFeDZ9NkiqjgQSzSDukuoeMWHMc4a7CePWPdVb OoyQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=uOTAd4HhpILj7P+m3RpVbLcrpbT1iOSWnhmb8sM/b04=; b=B3pRsQVJJt/F++OF5x3+qZiKxJLv0TXFxVMzcZvBuYDlrUVT9sCUactgx9i1InMzsW 0p7KON99KbXUIZWMADaHvMk7tsoS/oc+EIVvGMIyfa7mNCTfdpbjmQFoQd/V3JV7yYyW Gqu7K0CRH2HTlH6FoMR7e2apszHWaiDovOd+mMaq9dhkUjFp424sDjgXoX7FpiGP3Hn8 l52L8gcglkQI0U8vMxsVtL5aaElCPn0dbonazjAr7+oU1WofRwjMI8tuAHOBo4I/Oa9Z 0P2rx0NskVKPvIr6QXPJ0WIyraDaQN82bOwVz0Auv0KB4Pnd9vo+Vi6a3z1fUrTUOYPS LaPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VG3wZplw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 3-20020a170906208300b008787934c343si1650322ejq.815.2023.02.02.16.37.03; Thu, 02 Feb 2023 16:37:27 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=VG3wZplw; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231391AbjBCAfp (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60874 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232768AbjBCAfc (ORCPT ); Thu, 2 Feb 2023 19:35:32 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 470B064683; Thu, 2 Feb 2023 16:35:25 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D1EC761D4D; Fri, 3 Feb 2023 00:35:24 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5CB4FC433A7; Fri, 3 Feb 2023 00:35:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384524; bh=sg1KwdXv0FVnbAh1B0Mu7C1aCwLVKT+GZqGfNjJjHPY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=VG3wZplwO+GVQzyMRZG4X8sAF1pnYmkNRAn+pss8ExFm2/AlwKxwbRYTd1QQqV66x 3Ft5woMVhizrh9ICmdyzd13rc5bUYSO4IR5NiFU4POeWxwPmNskOtQrUokGylnrbXs Riq6wbQobN9HJoN5XB7kjrvX7ANky5pQPOLg0H8f6xZZSfkDqX6snFCXdcM/i/i+3Y vJ7ewIepA0UjqtnxyQlKFzX4/hdZbL+RFEwsLiIP7kS4r35Mg8JNdvQZ1i6K5R1CH4 KgGNALkT0yOAck/R1zXQAQxaCy9II1uSTnPKOpD6Y29OZ6tSCoUEdwLN3nVJwBBvQp gp9eHXEA/UP9Q== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Nathan Chancellor Subject: [PATCH 4.14 v2 05/15] hexagon: Fix function name in die() Date: Thu, 2 Feb 2023 16:33:44 -0800 Message-Id: <20230203003354.85691-6-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768132323998000?= X-GMAIL-MSGID: =?utf-8?q?1756768132323998000?= From: Nathan Chancellor commit 4f0712ccec09c071e221242a2db9a6779a55a949 upstream. When building ARCH=hexagon defconfig: arch/hexagon/kernel/traps.c:217:2: error: implicit declaration of function 'make_dead_task' [-Werror,-Wimplicit-function-declaration] make_dead_task(err); ^ The function's name is make_task_dead(), change it so there is no more build error. Fixes: 0e25498f8cd4 ("exit: Add and use make_task_dead.") Signed-off-by: Nathan Chancellor Link: https://lkml.kernel.org/r/20211227184851.2297759-2-nathan@kernel.org Signed-off-by: Eric W. Biederman Signed-off-by: Eric Biggers --- arch/hexagon/kernel/traps.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c index 797608772f8a4..65330343bdc33 100644 --- a/arch/hexagon/kernel/traps.c +++ b/arch/hexagon/kernel/traps.c @@ -234,7 +234,7 @@ int die(const char *str, struct pt_regs *regs, long err) panic("Fatal exception"); oops_exit(); - make_dead_task(err); + make_task_dead(err); return 0; } From patchwork Fri Feb 3 00:33:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52236 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp558968wrn; Thu, 2 Feb 2023 16:37:29 -0800 (PST) X-Google-Smtp-Source: AK7set9s5+TrFtMcQxdB8o3Kx+XcgQvstI5OIlChXG/8soxp8ut+WmTwBuE56FhNpq1XTFJT7PfF X-Received: by 2002:a05:6402:2316:b0:4a2:4ed3:c151 with SMTP id l22-20020a056402231600b004a24ed3c151mr7657332eda.39.1675384648908; Thu, 02 Feb 2023 16:37:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384648; cv=none; d=google.com; s=arc-20160816; b=ubEFxqgDekfTHGxbsBl/Rw+RAiE4HZesqrk/QiFdEycNycH08RrPV3RrG0ZV/GJUix JeGBqNeZo29LJkEpFKO7r9zkEszF8jqUsJO8vumgzfMeFKhu61dOHNoKKPNAGDnpgYwa OsRZGIzTLKoTOEiMmAMGNB9pB6FqKRbE77gky9ahyvCXBcVEM6g+nvmjcvdx5KPGB0So F5gQBevVXZwARxqvMW04OyHPEtiMhdLzbVOOU4MtM9GZG9jRmW72iUrO/wqKtyrzzu3L zxQhzLd7IkD1kvENr6w5ajBWe8MHa/rw7ZXlEs26jjCFboaS6nyXU8BgCLUdU5doZjrv lCUg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0+ip4U/OqP5VNuiYiDuTDXWGm7K8l7d7AlcU1RpRoOI=; b=WTIUhcg4SK+PydEfMtBh41wmPmjA9Tlk6fBb6jFxA3TPI8EaZyyslAsObAPeiSvW3a akVpdpHzC4xxWNzSgKsVQqCXC4pdyyDjmfZ0J7tF2rsSzDrtjbBZ9DPVB3L//c9bH8Cb TM2RuJcBJeNDb3tHYTA7uPY8bCWxV+jMwHvLD8PYasR4XmULjAPREljAUMAUk9gt+6rY Q4ZpcxQorZl+nEbgO8BeWfSyY9GZq5dhAIUsjzHmkc3xpPWvnYtklT6QBdI56/aKgD4x mzm3UJaxpM96jrMmxi1a7yg8NBAXwHUqByJ5YaCgawvXT9wueTe4mXZoV+q+nZJ+Hmjs 1/Gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Ve8JpqbK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 15-20020a17090602cf00b0088b3b09e143si1418886ejk.593.2023.02.02.16.37.05; Thu, 02 Feb 2023 16:37:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Ve8JpqbK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233240AbjBCAfu (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:50 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232168AbjBCAfd (ORCPT ); Thu, 2 Feb 2023 19:35:33 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3C3767783; Thu, 2 Feb 2023 16:35:25 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4E8BC61D4C; Fri, 3 Feb 2023 00:35:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCEC0C433A0; Fri, 3 Feb 2023 00:35:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384525; bh=w2+gKam0hgvqls1hiqaw8OhtqAs87LqFnf26zQZbz5Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ve8JpqbKAA++gANijkDSDXTx0Kr5qVkhYzIlAJuCRUwgFaX2Ttmpzxgix5ZlbUY4A UA8YdB2JTl0FnhDiaRNavlC7XMzRdbp+dYX2c8IAaHVfRtzvDbRR8nki7glziQq4nF UcXg2uGpJiIfXahXJBQmKENkvrtDdyzWhqOEErBxV4UDFzYLALQPkacLVfyvFuGNLS mH7EACjmffwDtlLgGnXPIrXOrUVFFqIyNXbikF5yng5rQKJaeL/rouSyKAHrZHDncX SBwGx6XMLL1ogah35QEX+x9/JkFUNXZzMh0pRwqdJQcPrC2DXc8iXmzOIomCRUT0Ri q7kUJbmnjXrxA== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Nathan Chancellor Subject: [PATCH 4.14 v2 06/15] h8300: Fix build errors from do_exit() to make_task_dead() transition Date: Thu, 2 Feb 2023 16:33:45 -0800 Message-Id: <20230203003354.85691-7-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768133765989311?= X-GMAIL-MSGID: =?utf-8?q?1756768133765989311?= From: Nathan Chancellor commit ab4ababdf77ccc56c7301c751dff49c79709c51c upstream. When building ARCH=h8300 defconfig: arch/h8300/kernel/traps.c: In function 'die': arch/h8300/kernel/traps.c:109:2: error: implicit declaration of function 'make_dead_task' [-Werror=implicit-function-declaration] 109 | make_dead_task(SIGSEGV); | ^~~~~~~~~~~~~~ arch/h8300/mm/fault.c: In function 'do_page_fault': arch/h8300/mm/fault.c:54:2: error: implicit declaration of function 'make_dead_task' [-Werror=implicit-function-declaration] 54 | make_dead_task(SIGKILL); | ^~~~~~~~~~~~~~ The function's name is make_task_dead(), change it so there is no more build error. Additionally, include linux/sched/task.h in arch/h8300/kernel/traps.c to avoid the same error because do_exit()'s declaration is in kernel.h but make_task_dead()'s is in task.h, which is not included in traps.c. Fixes: 0e25498f8cd4 ("exit: Add and use make_task_dead.") Signed-off-by: Nathan Chancellor Link: https://lkml.kernel.org/r/20211227184851.2297759-3-nathan@kernel.org Signed-off-by: Eric W. Biederman Signed-off-by: Eric Biggers --- arch/h8300/kernel/traps.c | 3 ++- arch/h8300/mm/fault.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/h8300/kernel/traps.c b/arch/h8300/kernel/traps.c index a284c126f07a6..090adaee4b84c 100644 --- a/arch/h8300/kernel/traps.c +++ b/arch/h8300/kernel/traps.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -110,7 +111,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err) dump(fp); spin_unlock_irq(&die_lock); - make_dead_task(SIGSEGV); + make_task_dead(SIGSEGV); } static int kstack_depth_to_print = 24; diff --git a/arch/h8300/mm/fault.c b/arch/h8300/mm/fault.c index a8d8fc63780e4..573825c3cb708 100644 --- a/arch/h8300/mm/fault.c +++ b/arch/h8300/mm/fault.c @@ -52,7 +52,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address, printk(" at virtual address %08lx\n", address); if (!user_mode(regs)) die("Oops", regs, error_code); - make_dead_task(SIGKILL); + make_task_dead(SIGKILL); return 1; } From patchwork Fri Feb 3 00:33:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52239 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559012wrn; Thu, 2 Feb 2023 16:37:34 -0800 (PST) X-Google-Smtp-Source: AK7set/EqQbqk0cv5Qe8zeD0/1bUcIDZvJImlz7EKuX+lLaPmh6tj0SruHS+1lTbO0LMiTMff0tv X-Received: by 2002:a17:907:2bc2:b0:878:7189:a457 with SMTP id gv2-20020a1709072bc200b008787189a457mr7771739ejc.51.1675384654789; Thu, 02 Feb 2023 16:37:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384654; cv=none; d=google.com; s=arc-20160816; b=X3DR7Vo/FqmZiTGdGAKeKumAt6XZ+4g2nVO+dLnCDysm5EWX0Fk46gErPVfpr48EfS dGD3QlCf/RcRkFlE0+Gg8GEQfqJt829RfnOyvPxH233oEaAWQJ6fzDrt3Tyrm9/pzRAK U986Dbkjo54BrVV28iDDpIw6uH5Gn+VQIfyfqApQW2Q92pC1s+6S+0BVWrwuPQ0laGpC 1GnFYJRvuj420Y/xMM5Hy9O8h72VR0WmGoLMQNvRdrbgZzED13DmUpoRjF16Iaqq5jAr xvGj1CMz5Q8jJJZEPs8o0EAcDzmgB8OCKPsmwiQVSYk78VVaxD985qC7oo4qU0m7KZC0 f/ZQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=A4LdS960ELsuRHtqgPRJyh2Ky+P0Kumd3bsPjw35xww=; b=eYS7ONYa0bJXPQGaMvxbOekqKT7RMzlLf+nVB27BjMB03JRLOxvup/n3O+tdvy236v iW6SYkAefU69HGgWbV9oU8EB2TqeV/uK6cW7E51yrm2o8F3W1xqODWJ8QLZNlHxufti+ dPshTh2Y3XnYDq0i0OLu7r0U/YUivKLkA5eVjjaRdhV+p5DPnvHPk7ZWQLwn9uylXuBi 0r3QL5J9OAE9TsnSLIVPyM//Ct88D4ceHSkYT65urvZ4Gb8EzLEc0dE7JMIUsb8EGpo2 T5or1HbsC130RuRCSskEyU9HgSs9zQsm05bLh+v9fClyCrEXwx9RLBKeEUzmfPjOyAPm hmgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Dlcf6yMp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 29-20020a170906101d00b00877817a13ddsi1266840ejm.878.2023.02.02.16.37.11; Thu, 02 Feb 2023 16:37:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Dlcf6yMp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233438AbjBCAf4 (ORCPT + 99 others); Thu, 2 Feb 2023 19:35:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229602AbjBCAfd (ORCPT ); Thu, 2 Feb 2023 19:35:33 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B6CC167798; Thu, 2 Feb 2023 16:35:26 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 50C1361D50; Fri, 3 Feb 2023 00:35:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49538C433D2; Fri, 3 Feb 2023 00:35:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384525; bh=OEFRgj2r07VcIiioIVTwsasK/y5NxA97g2mUL0L6xKQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Dlcf6yMpwHQC2n9ApWgNRk1noTHrCDJaI7gyo9cSWUGHvEcRP/TKqk4KFWqk77VTZ X8NL2bnf+wFZ6pGZG+fKhDN6r+9wqg4zbmPG1sxYWyGEN9YP/k2ushZ53FC6q+fu4a doH1SUDRO8c4hm5Bfqe9NngS8FFV6P794/vlw06gS/LKododEeDCL4Lb7tijUmHkSs MyLAxcSnBbPlhuhE/6wq+v7khIE9qwkexfff2UyWGbA5+sB6qxke8G44XpyzuD60U4 89M+oYZa+NUXeqcAU2swBmb2cvhMa7NjZdJ886QHgkYOTyfWIyrTHMAyHyQp7hGyXo Q3EPmnedNtFwg== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Tony Luck , Randy Dunlap , Christoph Hellwig , Christoph Hellwig , Andrew Morton , Linus Torvalds Subject: [PATCH 4.14 v2 07/15] ia64: make IA64_MCA_RECOVERY bool instead of tristate Date: Thu, 2 Feb 2023 16:33:46 -0800 Message-Id: <20230203003354.85691-8-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768139829487824?= X-GMAIL-MSGID: =?utf-8?q?1756768139829487824?= From: Randy Dunlap commit dbecf9b8b8ce580f4e11afed9d61e8aa294cddd2 upstream. In linux-next, IA64_MCA_RECOVERY uses the (new) function make_task_dead(), which is not exported for use by modules. Instead of exporting it for one user, convert IA64_MCA_RECOVERY to be a bool Kconfig symbol. In a config file from "kernel test robot " for a different problem, this linker error was exposed when CONFIG_IA64_MCA_RECOVERY=m. Fixes this build error: ERROR: modpost: "make_task_dead" [arch/ia64/kernel/mca_recovery.ko] undefined! Link: https://lkml.kernel.org/r/20220124213129.29306-1-rdunlap@infradead.org Fixes: 0e25498f8cd4 ("exit: Add and use make_task_dead.") Signed-off-by: Randy Dunlap Suggested-by: Christoph Hellwig Reviewed-by: Christoph Hellwig Reviewed-by: "Eric W. Biederman" Cc: Tony Luck Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Eric Biggers --- arch/ia64/Kconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 1efc444f5fa1a..f8dac6bd17dd2 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -461,7 +461,7 @@ config ARCH_PROC_KCORE_TEXT depends on PROC_KCORE config IA64_MCA_RECOVERY - tristate "MCA recovery from errors other than TLB." + bool "MCA recovery from errors other than TLB." config PERFMON bool "Performance monitor support" From patchwork Fri Feb 3 00:33:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52240 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559020wrn; Thu, 2 Feb 2023 16:37:36 -0800 (PST) X-Google-Smtp-Source: AK7set+PThe0j74yIb4HREyfxqArrtDV3Mp1Wf5sUdxXTSGmvNHEuh0gOab5vFohOwBN/KgakN3F X-Received: by 2002:a05:6a00:244b:b0:592:7828:b011 with SMTP id d11-20020a056a00244b00b005927828b011mr9302106pfj.2.1675384656580; Thu, 02 Feb 2023 16:37:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384656; cv=none; d=google.com; s=arc-20160816; b=u4j8CGROR9cX8lBMQSfwhf4tLHF8q1XH4b9uWISjKgIX8A5qJAVlp8wDbJKIJhDxB0 29kW28xwx7vd6Ck0uhF7LCtl+n8Engu02cLFsGLAigG8QmYrrbI9k2Eu2fc6/sIa/40C NsC7C0m0IBY1GJQaa2W+wE37PPWMLu2rrmTTnGyuUCVABOuGV/Y1vIj83g5zPPNwsYlN 0RzHBePFljopdihbfjJI+CtW8jo9sWJAuX3spokBV+6j7ZfdaXBD3MT6zYeG9IK/Y/jV KXkMvWstHnNk56zqsp4DDOofnH5YK0bP8KiCgGSyd3rRMT0CaL9hW12zv0jr/7l99vou ifnA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=093gYfEw85z2JAt3Z0U3h0+7yj6eUFSObg6HIy9lfqM=; b=NqRa8T462IwsdS4szMWrl36LQk5IcM2D3YNYtF8EtBvHzioiag6UdiYiBQeg8j1XsC ZkF5irJKAFWxtKQgvdlmx2veMKvaHSxmHbLeECtPYAt7gri/WQrCE5tPGkuThz97jb9u h4lvb95UbyyeM8gmbfYpF6S8eMHwzkS1eCETz20+hzyzeO2/z2j1FBmLZjfdoSSKTZ89 tZiN/jbTX3ZZp6THXXjVXZIF0RA9n02bZQpVkssCINtJ8XSo8lyGelir7Q7mYnNf4wA5 GVrxZkxGTNQ+BwGFQFMWHLq664uc4u31Zu19mz7pUi8cClTpZCSA3o7JOb31rybTNQqg vNBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LY3M5qJa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c137-20020a624e8f000000b005926218b69esi759324pfb.325.2023.02.02.16.37.24; Thu, 02 Feb 2023 16:37:36 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=LY3M5qJa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S232394AbjBCAgS (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:18 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60888 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233007AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0AAFD677A0; Thu, 2 Feb 2023 16:35:29 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 8573AB828E2; Fri, 3 Feb 2023 00:35:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC8F1C4339C; Fri, 3 Feb 2023 00:35:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384526; bh=GM64I8LDi7cDnrLEl3psUaDr0dWAk6jElGhklKg21VU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LY3M5qJaY7UCu743hTXz14bO4ciCmBVEWmP8KRMFK20bt29TYqcDBUv9C/Q48bp5G G9fLAI2glDaQ/rUQMZ+TYJo+7VV1WAfNsXhTMNU1+o81VdJcnPO7hQscc64hALucJq yEVmgx7sJO7lfZJtvbTOmL9PpwgnjYxZZed/xM9/+RHz8i2cWzVEIBTAw3lvEzMsoZ tE3fAEUJ5aR9s3C3SI+WyzX9G8pRHUy/2bcFd5r6Rg1D+LVAletGkMXMmOEoFU/n8s iOWIzixQti6bUPgljg7FGZYJmdIZlaxBpjMpg5fhJs7Qdch34wxtP/x97Kqa8m2vJ4 VO6h31NxEbc5A== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Luis Chamberlain Subject: [PATCH 4.14 v2 08/15] exit: Put an upper limit on how often we can oops Date: Thu, 2 Feb 2023 16:33:47 -0800 Message-Id: <20230203003354.85691-9-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768141552293828?= X-GMAIL-MSGID: =?utf-8?q?1756768141552293828?= From: Jann Horn commit d4ccd54d28d3c8598e2354acc13e28c060961dbb upstream. Many Linux systems are configured to not panic on oops; but allowing an attacker to oops the system **really** often can make even bugs that look completely unexploitable exploitable (like NULL dereferences and such) if each crash elevates a refcount by one or a lock is taken in read mode, and this causes a counter to eventually overflow. The most interesting counters for this are 32 bits wide (like open-coded refcounts that don't use refcount_t). (The ldsem reader count on 32-bit platforms is just 16 bits, but probably nobody cares about 32-bit platforms that much nowadays.) So let's panic the system if the kernel is constantly oopsing. The speed of oopsing 2^32 times probably depends on several factors, like how long the stack trace is and which unwinder you're using; an empirically important one is whether your console is showing a graphical environment or a text console that oopses will be printed to. In a quick single-threaded benchmark, it looks like oopsing in a vfork() child with a very short stack trace only takes ~510 microseconds per run when a graphical console is active; but switching to a text console that oopses are printed to slows it down around 87x, to ~45 milliseconds per run. (Adding more threads makes this faster, but the actual oops printing happens under &die_lock on x86, so you can maybe speed this up by a factor of around 2 and then any further improvement gets eaten up by lock contention.) It looks like it would take around 8-12 days to overflow a 32-bit counter with repeated oopsing on a multi-core X86 system running a graphical environment; both me (in an X86 VM) and Seth (with a distro kernel on normal hardware in a standard configuration) got numbers in that ballpark. 12 days aren't *that* short on a desktop system, and you'd likely need much longer on a typical server system (assuming that people don't run graphical desktop environments on their servers), and this is a *very* noisy and violent approach to exploiting the kernel; and it also seems to take orders of magnitude longer on some machines, probably because stuff like EFI pstore will slow it down a ton if that's active. Signed-off-by: Jann Horn Link: https://lore.kernel.org/r/20221107201317.324457-1-jannh@google.com Reviewed-by: Luis Chamberlain Signed-off-by: Kees Cook Link: https://lore.kernel.org/r/20221117234328.594699-2-keescook@chromium.org Signed-off-by: Eric Biggers --- Documentation/sysctl/kernel.txt | 9 +++++++ kernel/exit.c | 43 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 37b612a17c461..7b04c616c5901 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt @@ -48,6 +48,7 @@ show up in /proc/sys/kernel: - msgmnb - msgmni - nmi_watchdog +- oops_limit - osrelease - ostype - overflowgid @@ -515,6 +516,14 @@ scanned for a given scan. ============================================================== +oops_limit: + +Number of kernel oopses after which the kernel should panic when +``panic_on_oops`` is not set. Setting this to 0 or 1 has the same effect +as setting ``panic_on_oops=1``. + +============================================================== + osrelease, ostype & version: # cat osrelease diff --git a/kernel/exit.c b/kernel/exit.c index 1e778b88fa3fe..482bcaf158127 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -68,6 +68,33 @@ #include #include +/* + * The default value should be high enough to not crash a system that randomly + * crashes its kernel from time to time, but low enough to at least not permit + * overflowing 32-bit refcounts or the ldsem writer count. + */ +static unsigned int oops_limit = 10000; + +#ifdef CONFIG_SYSCTL +static struct ctl_table kern_exit_table[] = { + { + .procname = "oops_limit", + .data = &oops_limit, + .maxlen = sizeof(oops_limit), + .mode = 0644, + .proc_handler = proc_douintvec, + }, + { } +}; + +static __init int kernel_exit_sysctls_init(void) +{ + register_sysctl_init("kernel", kern_exit_table); + return 0; +} +late_initcall(kernel_exit_sysctls_init); +#endif + static void __unhash_process(struct task_struct *p, bool group_dead) { nr_threads--; @@ -922,10 +949,26 @@ EXPORT_SYMBOL_GPL(do_exit); void __noreturn make_task_dead(int signr) { + static atomic_t oops_count = ATOMIC_INIT(0); + /* * Take the task off the cpu after something catastrophic has * happened. */ + + /* + * Every time the system oopses, if the oops happens while a reference + * to an object was held, the reference leaks. + * If the oops doesn't also leak memory, repeated oopsing can cause + * reference counters to wrap around (if they're not using refcount_t). + * This means that repeated oopsing can make unexploitable-looking bugs + * exploitable through repeated oopsing. + * To make sure this can't happen, place an upper bound on how often the + * kernel may oops without panic(). + */ + if (atomic_inc_return(&oops_count) >= READ_ONCE(oops_limit)) + panic("Oopsed too often (kernel.oops_limit is %d)", oops_limit); + do_exit(signr); } From patchwork Fri Feb 3 00:33:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52245 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559143wrn; Thu, 2 Feb 2023 16:37:54 -0800 (PST) X-Google-Smtp-Source: AK7set9bH7ny9KcljjMkuODipiK546BIMToeb+PQgmZK9x0CVUOr1SVFOgsreeiXUhwVnCDEhhw+ X-Received: by 2002:a17:906:600f:b0:872:2cc4:6886 with SMTP id o15-20020a170906600f00b008722cc46886mr7173456ejj.30.1675384674083; Thu, 02 Feb 2023 16:37:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384674; cv=none; d=google.com; s=arc-20160816; b=XazvEf4gQapTodlwDuRVNV8PvY888X5hL5C89nHEqImNtDB0VDkERQOzbgBuX7gqMi l4p9VGxno269dDt2hx+y2jyjiKzq7wVVRGdZvWAvS7Bby0z8/q0VNK5nRFj+7kzlUqaH rCjjhS2gHzKfu+yk/6j3nDGI5o1inL74T57f2SM9XNzP/+lahDJ5g+jWXzECPCPQe0r9 PLqczSVS0nsqMX4aZCxNcgRgXQuz47W6jYZb4VfL27kfRr8+Mjo7beNYGOpiuB9vtYqq kWWxXpiRDhKYDvIm6lZDh5UbxS8c2GdSbl91ssOqdmZVZURvhZ2upSnN8g5XDcuYgawX +YZw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=76RRolvZ1i7tDqVVGKkpPSGPut66fQ8LXBZ7DxBHhSM=; b=WSmcXbbAtrPpSQw1mqvJP/Y603NCQXILIbMXoj9GCMYzEKt/kYWanZqucF9fJIh8La TSIO9QHKPK1KF0Xjb94en+fZZRGb5Mf6PFM6uXJNzKT+MMPwwVe0fFVqWgeuGBK5EsZN OtjznBp/aQ5w30/V//sHc098f97K1JHlIpc8biZGvU2pxnvowRmZybuswxIsbo9ZYg9g dYANxKKMJ/XyiU7mUSLR5GhSRtf/q+TiWOQEOnZf1eQXd98U9bbSHVQeeaPHUjHNbOb2 fwPVGGSeyZ0hAJBCh0wJ1giX0Hx/5cvjaqeW6dcwL74LDkj/LduhVE0iAXtMW9rC8xg0 49Mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=l6SyG6UW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bp9-20020a170907918900b0087856ae3640si1086040ejb.75.2023.02.02.16.37.30; Thu, 02 Feb 2023 16:37:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=l6SyG6UW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233320AbjBCAg2 (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60882 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232937AbjBCAfd (ORCPT ); Thu, 2 Feb 2023 19:35:33 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 200FA63871; Thu, 2 Feb 2023 16:35:28 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D5E7761D48; Fri, 3 Feb 2023 00:35:26 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5962DC433EF; Fri, 3 Feb 2023 00:35:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384526; bh=NvHqmOgG2aAfs54Rnjd2jLih4AMjzsSDG6iFMQBllZY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l6SyG6UWMh4edXuuDsz+y+xJ+BlvUaVDoEgAgY7UttYMq+mlXaBdvu9DI+ZRnGX37 B4NO/big5hpcoPizMQiuD2qe1MBjM6cJSPsG78wEl9sbp/MFcJ9rA/d2esIiD3JdeG y31vAju5c+PHVyzJZtad/r5LlmNsfOFT+neAv1yygp9VbcjhUWDKfH3teSPFUkZmJD HTizb44xKlcWUq9AL9NTb6nDZzSN4WK5uGFfOQKqjsjdvsjHw+ScsAjtTopzrArmln 4YYqvIxdFNQ96oJCYM49y32flzs2eft4gg/cM9etp7H+IolfGvGTJheWu4GKLAxxT0 3N54E99TcKqtQ== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Arnd Bergmann , Luis Chamberlain Subject: [PATCH 4.14 v2 09/15] exit: Expose "oops_count" to sysfs Date: Thu, 2 Feb 2023 16:33:48 -0800 Message-Id: <20230203003354.85691-10-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768160177648819?= X-GMAIL-MSGID: =?utf-8?q?1756768160177648819?= From: Kees Cook commit 9db89b41117024f80b38b15954017fb293133364 upstream. Since Oops count is now tracked and is a fairly interesting signal, add the entry /sys/kernel/oops_count to expose it to userspace. Cc: "Eric W. Biederman" Cc: Jann Horn Cc: Arnd Bergmann Reviewed-by: Luis Chamberlain Signed-off-by: Kees Cook Link: https://lore.kernel.org/r/20221117234328.594699-3-keescook@chromium.org Signed-off-by: Eric Biggers --- .../ABI/testing/sysfs-kernel-oops_count | 6 +++++ kernel/exit.c | 22 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-kernel-oops_count diff --git a/Documentation/ABI/testing/sysfs-kernel-oops_count b/Documentation/ABI/testing/sysfs-kernel-oops_count new file mode 100644 index 0000000000000..156cca9dbc960 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-kernel-oops_count @@ -0,0 +1,6 @@ +What: /sys/kernel/oops_count +Date: November 2022 +KernelVersion: 6.2.0 +Contact: Linux Kernel Hardening List +Description: + Shows how many times the system has Oopsed since last boot. diff --git a/kernel/exit.c b/kernel/exit.c index 482bcaf158127..138b110bf83a1 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -62,6 +62,7 @@ #include #include #include +#include #include #include @@ -95,6 +96,25 @@ static __init int kernel_exit_sysctls_init(void) late_initcall(kernel_exit_sysctls_init); #endif +static atomic_t oops_count = ATOMIC_INIT(0); + +#ifdef CONFIG_SYSFS +static ssize_t oops_count_show(struct kobject *kobj, struct kobj_attribute *attr, + char *page) +{ + return sysfs_emit(page, "%d\n", atomic_read(&oops_count)); +} + +static struct kobj_attribute oops_count_attr = __ATTR_RO(oops_count); + +static __init int kernel_exit_sysfs_init(void) +{ + sysfs_add_file_to_group(kernel_kobj, &oops_count_attr.attr, NULL); + return 0; +} +late_initcall(kernel_exit_sysfs_init); +#endif + static void __unhash_process(struct task_struct *p, bool group_dead) { nr_threads--; @@ -949,8 +969,6 @@ EXPORT_SYMBOL_GPL(do_exit); void __noreturn make_task_dead(int signr) { - static atomic_t oops_count = ATOMIC_INIT(0); - /* * Take the task off the cpu after something catastrophic has * happened. From patchwork Fri Feb 3 00:33:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52246 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559158wrn; Thu, 2 Feb 2023 16:37:56 -0800 (PST) X-Google-Smtp-Source: AK7set/w1y6LPWxcYO2bykzci23wyJIEAzPmX+ljzSIv5M7fpZdiKF5culsyhyYogLSJ774pdwJu X-Received: by 2002:a17:906:a01a:b0:889:8b6c:abf8 with SMTP id p26-20020a170906a01a00b008898b6cabf8mr7388401ejy.10.1675384676241; Thu, 02 Feb 2023 16:37:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384676; cv=none; d=google.com; s=arc-20160816; b=htRyAzsTRUgBOX30VbguogP72ktI1kNnxpNTmFB5rxDXfqGaMSxNYfW0Sv3JsgYgSg HIkZu4g6KVuck+8DxHetGbS0SO/zjySQXk7cRrsQUoxlDtvwsTtXG2KohXvlTQ/AvXGQ ft8o/iiGIWiXO7315Vp7LDM7EdyFnR8kPotcS1azoAYjqlstfwYBtAjwHSF1T3cESR1W hDVab9qKqVng/26Ww415UnOgXpw07iSkEZvbUhNnAW8eYJhcQbQ4tgj6YQoK8zC1JVGf AQFBrUzE+KNYAux5b3H0leazOx9yqx3SgxGBTrX8VjujQGEUwnPd5Um1718xGLbQhQu6 M5nQ== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=DAdBC0YEFItiXOn+wRr2Rcr4L/DK9KXQUospM9AD/VU=; b=FAlXXcG+f2V0LgO9WuyUO1+d/3qJP3oeZi8K3ge4OT6PWUnZHRe88q05kH89OQBEid AV5rPWyQEwQ31XZpN7kheA4LoE2vj5JTYzTCnZeBHD4wBR5zk72+sdBpi/6vLX1l2rGq vvmOogQBuLq+oZl3rGYcsYxPfUne2npwF2PrSYtDydTaNQTBQrO8+4Y1RoGRf1yh8gTg 7Clw+YBDnfqEWQdXwFFQpVZ/SRuNe3Wg8l/UUQgLlGF7F2hmWWzJPXhVAnh3XZ+YhST3 6HgR+82X42cB21lB1LYU/RtZFPemFWAVRL9hkF4GLvPxi4K/xTazBdf3R3h7mjmIMgd/ YPfg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WZX8khSo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id uk28-20020a170907ca1c00b00887cdc2699fsi1138426ejc.544.2023.02.02.16.37.30; Thu, 02 Feb 2023 16:37:56 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WZX8khSo; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233319AbjBCAge (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:34 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233002AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2024A64D88; Thu, 2 Feb 2023 16:35:28 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 82C9961D55; Fri, 3 Feb 2023 00:35:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D1702C433A4; Fri, 3 Feb 2023 00:35:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384527; bh=gTyWdbMQBkC6bj2L7uRC+LIn00TYkfea/W2V8Ev9Cfw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WZX8khSoRGKi+/ZPCF8w02+6cs3G6RC4ngD6qBTJ8fyM4WOuJgB22AZDKypKA7QkT 1iuvMVBI6x7VoMwjiFALmOSrsmEJaf72pZWWkfc/JkNvs7daZTTGnn6tRMPhHE8y+1 pwzEw1/Bx7L9CAxkv2U3L3d9sr/Weot1KH6u0NwVMb60KjmFAyk/W6yHC6lFzOpxpM vg1b1xwqxj8QXPwkXHOU4RHQMI/WDuM1KRj9jEdvrXwUuMiVX9NM8NFzg9sfFn3li0 sp+MbSbEuUhcVtL09J+yswmrZlUXm3vV7FHBz0Ds5Uvk9IAPnmvbarrgxe2FrBoOQn tdZVYC24gfpow== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Jonathan Corbet , Andrew Morton , Baolin Wang , "Jason A. Donenfeld" , Eric Biggers , Huang Ying , Arnd Bergmann , linux-doc@vger.kernel.org Subject: [PATCH 4.14 v2 10/15] exit: Allow oops_limit to be disabled Date: Thu, 2 Feb 2023 16:33:49 -0800 Message-Id: <20230203003354.85691-11-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768161905428288?= X-GMAIL-MSGID: =?utf-8?q?1756768161905428288?= From: Kees Cook commit de92f65719cd672f4b48397540b9f9eff67eca40 upstream. In preparation for keeping oops_limit logic in sync with warn_limit, have oops_limit == 0 disable checking the Oops counter. Cc: Jann Horn Cc: Jonathan Corbet Cc: Andrew Morton Cc: Baolin Wang Cc: "Jason A. Donenfeld" Cc: Eric Biggers Cc: Huang Ying Cc: "Eric W. Biederman" Cc: Arnd Bergmann Cc: linux-doc@vger.kernel.org Signed-off-by: Kees Cook Signed-off-by: Eric Biggers --- Documentation/sysctl/kernel.txt | 5 +++-- kernel/exit.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 7b04c616c5901..b6124a4475fb7 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt @@ -519,8 +519,9 @@ scanned for a given scan. oops_limit: Number of kernel oopses after which the kernel should panic when -``panic_on_oops`` is not set. Setting this to 0 or 1 has the same effect -as setting ``panic_on_oops=1``. +``panic_on_oops`` is not set. Setting this to 0 disables checking +the count. Setting this to 1 has the same effect as setting +``panic_on_oops=1``. The default value is 10000. ============================================================== diff --git a/kernel/exit.c b/kernel/exit.c index 138b110bf83a1..73103e008a627 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -984,7 +984,7 @@ void __noreturn make_task_dead(int signr) * To make sure this can't happen, place an upper bound on how often the * kernel may oops without panic(). */ - if (atomic_inc_return(&oops_count) >= READ_ONCE(oops_limit)) + if (atomic_inc_return(&oops_count) >= READ_ONCE(oops_limit) && oops_limit) panic("Oopsed too often (kernel.oops_limit is %d)", oops_limit); do_exit(signr); From patchwork Fri Feb 3 00:33:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52244 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559139wrn; Thu, 2 Feb 2023 16:37:52 -0800 (PST) X-Google-Smtp-Source: AK7set8HeSiABqbnqPIVr3uxFWFrZO/wLA8itoLJmOwprYRELX1nITPFHtjpvDxVjbG09k9Mpenm X-Received: by 2002:a17:907:75cd:b0:878:5976:5bb7 with SMTP id jl13-20020a17090775cd00b0087859765bb7mr8407146ejc.8.1675384672764; Thu, 02 Feb 2023 16:37:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384672; cv=none; d=google.com; s=arc-20160816; b=JrbSVBckGZIyf39agyuccWO5CWAtjKVy4b00OKlWecuXJ0RYf7g/zSJ357Jd5/rCGe F04oEWKI1JUiUQs3sXI+TVAfw0EJpXTVKTcZRRg6SHX+oE8fRYZf4PeVT18RiF8OpkMJ 7Cf1moZrqYqiWjUybzyrR5KQitXEp75hYuw+YkP6rWrSRvEDvQGM3Admbb6aWlgj3IUY Z5UNXPXEb6TfT5CJ+TqRt+1yqq4I84uIDh2bT8PexpWdmtDMn9MWHiqJe/P6KRyNOR4S hoEpsYTb+367UKarhTMFlh6DEIH3X9+SBK3f73TeNjw74BhnOgUmX+04MkrtVMYO421z kT5Q== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=TkJOR9gE/ZgCf1np52kiVzP8tod51X8d+0G4m7OAISk=; b=DC+wqaSTXc0nJt+tqLhNTZ4Cos68snrX9oQl/TaJLCHKxH3r0whOhX6sN3ms4iWiiS EENnbCBcnu7Sx8FpQ6VlT/5pA4vIF7qV0U0HqYz81ISq1oY4Ek4QK7RzDZZnrQRl2zQU lL1qRf4udpOj4kIwBLwW3hL7kb7qtojajZ3r1mVrSFaB7es6414WsyONo8YcoDAxKrdn GZ6ScD71xAKrTV2n3TjMwViE0ggkVWikmNeWPTJsJ6YJEDW0Uvfrw4Rkyt/mTBAuWWTL 5+jM+RlpdTn+IrG4bXtZdjuOD+hlUIJc+ghQsu86MTGRE6Yi1UjAp6/WUKv+M4KnIUUK a+ig== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KKN3O7Mr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n19-20020a17090673d300b00886c5066aacsi1372654ejl.535.2023.02.02.16.37.29; Thu, 02 Feb 2023 16:37:52 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=KKN3O7Mr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233269AbjBCAgY (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:24 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233022AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8DEEF65ECE; Thu, 2 Feb 2023 16:35:29 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2A29E61D4A; Fri, 3 Feb 2023 00:35:29 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7F7BFC433A0; Fri, 3 Feb 2023 00:35:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384528; bh=5qk9VBUgOtMc5zgeGwRMJtJqYseJs6r6q9ybZnMLMDQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KKN3O7Mrzj+qk2v763QF+gmzaZkZmbF6cSIko6XDBqxC8fWh7les+o7IBY48dfWMN XYgiDC/qnhthlvf6sjD8DnmvRUcRuBMDdvoskPKzj6jQgC4XsjWyPr+3LqoUkMp1Or AXg2/vACugQXShfCjgARl9raO804XVMJozlRS0BQd6ET5rNGa+GdB5V2mTiVPE8eIJ Faq6Ps+fTK3lfuF21roQKWljmlSDLaUC68xr4k++/QiQczu1NjcMlF8HpwuYcFWqwR r5L7kXRXxMvprspGShryVqLghUneGeHg/oyvB42QnF2nHTpXbBvrCWLVDPClxD/Vo5 8ZTHPedsffzcA== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Marco Elver , Dmitry Vyukov , Ingo Molnar , Peter Zijlstra , Juri Lelli , Vincent Guittot , Dietmar Eggemann , Steven Rostedt , Ben Segall , Mel Gorman , Daniel Bristot de Oliveira , Valentin Schneider , Andrey Ryabinin , Alexander Potapenko , Andrey Konovalov , Vincenzo Frascino , Andrew Morton , David Gow , tangmeng , Shuah Khan , Petr Mladek , "Paul E. McKenney" , Sebastian Andrzej Siewior , "Guilherme G. Piccoli" , Tiezhu Yang , kasan-dev@googlegroups.com, linux-mm@kvack.org, Luis Chamberlain Subject: [PATCH 4.14 v2 11/15] panic: Consolidate open-coded panic_on_warn checks Date: Thu, 2 Feb 2023 16:33:50 -0800 Message-Id: <20230203003354.85691-12-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768158370360490?= X-GMAIL-MSGID: =?utf-8?q?1756768158370360490?= From: Kees Cook commit 79cc1ba7badf9e7a12af99695a557e9ce27ee967 upstream. Several run-time checkers (KASAN, UBSAN, KFENCE, KCSAN, sched) roll their own warnings, and each check "panic_on_warn". Consolidate this into a single function so that future instrumentation can be added in a single location. Cc: Marco Elver Cc: Dmitry Vyukov Cc: Ingo Molnar Cc: Peter Zijlstra Cc: Juri Lelli Cc: Vincent Guittot Cc: Dietmar Eggemann Cc: Steven Rostedt Cc: Ben Segall Cc: Mel Gorman Cc: Daniel Bristot de Oliveira Cc: Valentin Schneider Cc: Andrey Ryabinin Cc: Alexander Potapenko Cc: Andrey Konovalov Cc: Vincenzo Frascino Cc: Andrew Morton Cc: David Gow Cc: tangmeng Cc: Jann Horn Cc: Shuah Khan Cc: Petr Mladek Cc: "Paul E. McKenney" Cc: Sebastian Andrzej Siewior Cc: "Guilherme G. Piccoli" Cc: Tiezhu Yang Cc: kasan-dev@googlegroups.com Cc: linux-mm@kvack.org Reviewed-by: Luis Chamberlain Signed-off-by: Kees Cook Reviewed-by: Marco Elver Reviewed-by: Andrey Konovalov Link: https://lore.kernel.org/r/20221117234328.594699-4-keescook@chromium.org Signed-off-by: Eric Biggers --- include/linux/kernel.h | 1 + kernel/panic.c | 9 +++++++-- kernel/sched/core.c | 3 +-- mm/kasan/report.c | 3 +-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 22b9146655958..a4ac278d02d0a 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -293,6 +293,7 @@ extern long (*panic_blink)(int state); __printf(1, 2) void panic(const char *fmt, ...) __noreturn __cold; void nmi_panic(struct pt_regs *regs, const char *msg); +void check_panic_on_warn(const char *origin); extern void oops_enter(void); extern void oops_exit(void); void print_oops_end_marker(void); diff --git a/kernel/panic.c b/kernel/panic.c index bd7c3ea3bf1e6..8e3460e985904 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -122,6 +122,12 @@ void nmi_panic(struct pt_regs *regs, const char *msg) } EXPORT_SYMBOL(nmi_panic); +void check_panic_on_warn(const char *origin) +{ + if (panic_on_warn) + panic("%s: panic_on_warn set ...\n", origin); +} + /** * panic - halt the system * @fmt: The text string to print @@ -546,8 +552,7 @@ void __warn(const char *file, int line, void *caller, unsigned taint, if (args) vprintk(args->fmt, args->args); - if (panic_on_warn) - panic("panic_on_warn set ...\n"); + check_panic_on_warn("kernel"); print_modules(); diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 544a1cb66d90d..5dc66377864a9 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -3185,8 +3185,7 @@ static noinline void __schedule_bug(struct task_struct *prev) print_ip_sym(preempt_disable_ip); pr_cont("\n"); } - if (panic_on_warn) - panic("scheduling while atomic\n"); + check_panic_on_warn("scheduling while atomic"); dump_stack(); add_taint(TAINT_WARN, LOCKDEP_STILL_OK); diff --git a/mm/kasan/report.c b/mm/kasan/report.c index 6bcfb01ba0386..1c96c83f97751 100644 --- a/mm/kasan/report.c +++ b/mm/kasan/report.c @@ -172,8 +172,7 @@ static void kasan_end_report(unsigned long *flags) pr_err("==================================================================\n"); add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); spin_unlock_irqrestore(&report_lock, *flags); - if (panic_on_warn) - panic("panic_on_warn set ...\n"); + check_panic_on_warn("KASAN"); kasan_enable_current(); } From patchwork Fri Feb 3 00:33:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52238 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559008wrn; Thu, 2 Feb 2023 16:37:34 -0800 (PST) X-Google-Smtp-Source: AK7set8umpDxWG9luRfUF/7M3Wp8Tl79lAAHAqe5Vr86cdmOTUVXRiZUougCY1L7N2oXtEKAqfpD X-Received: by 2002:a05:6a21:33aa:b0:bc:fe7e:cfd9 with SMTP id yy42-20020a056a2133aa00b000bcfe7ecfd9mr10455177pzb.18.1675384653953; Thu, 02 Feb 2023 16:37:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384653; cv=none; d=google.com; s=arc-20160816; b=eq8KnJdyCahNBuhPWWxBlw68xsPHDNZBZTMRH4DEzbHEkhwaM7TV4Mu4l6Mesxo8rG s0IQf9D+6GNP9Xfbfu9GnL2/yWiWar4rLtoBGxAspoBElWCL32nqYmruXin6j2NdmajX E1vg3JInHo9h1+z8likAfgZEp2B3GcNdh/6iG4cKQ/bswYz3W5s9+VmZB8yZbOw8b3hA lgI9qkvdTV+lFHr9jFg/wwYC8sGz8X170TMsVtQg2CyJg/ywuw1/7TTRJvBp87tnIHdM mBR/Z2XOd2KR9whxEVCrb0RK/rolF7dfxzEEAAnFWesvtEs0cNxGgPFweR9nppkpEUtb Qh1A== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=arC+zTRa2LBlfSsUUxQ0fYnR9NcLi1jD77wTWghENKo=; b=fsxj2E2a9Xd6pLgGkT39f7hQvIeImY5966POIGmzkrDv8leSx4NBPRm/++bGOk4i+M d5E2b3za7lWUDP4semuMNqaNwJVpd4b7H3vStQsKguATIU7JKv+pHKW+Oy7Dsi6Dd9rn xaBMZ07AzJxwm22G9wNLgNrLcgDgtdrnTvSoGrrjJ6NEe0KnZOZnwZtsIyn+yzKGWw74 /XBfqc6jw7cr0PypHDS57d23FJDFWqB89flca8YjSzNmJp98/mM5Q8AgH8oys171GNfI 4i7TLm9rljZnGtroDIY4AvpjoGQ9dvDFWgd1A5dUzsHrqkRNOfB8Qc2Q9jYDKWgbmfRt MksA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=E99aAofi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o21-20020a637e55000000b004792b08adaasi1081237pgn.418.2023.02.02.16.37.21; Thu, 02 Feb 2023 16:37:33 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=E99aAofi; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233404AbjBCAgQ (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60768 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230432AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F016A65EEA; Thu, 2 Feb 2023 16:35:31 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id A668AB828BF; Fri, 3 Feb 2023 00:35:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B7080C433D2; Fri, 3 Feb 2023 00:35:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384529; bh=yLIP0xVEX1f7nCjSlc4iuL265LW+GAg4/ELnRAuM/P4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E99aAofi/WnzrEV8cawRG9n1rrgzh54bF0bbM9JXj3Y/Z7o2ShwYy5wCr0lh6z4cG rx0r5Ku/NcnivdSl4ECfQNFW3JezjjKcv3QQD14QeIVT56ggfsPq0a69U80ykiNC1q cPe6NVJDNSCHckPsqOX8kI3fByFtW2ZKnof3SYXeQWuVwLidazIsaeNGvrH0TqkMdg MpsqWOBHu3CRCxEvCxPMzvLVA8QXHNRxx55oagR4LRCKbJZzQuoaIeHHYwwdYHFqES 6LVxtY2m2MEiNh8LKPwUYIPgYZf249w+fu1GOLceGGzYPqzUzRgNBD/nm9qTdpAkea ERpzYMNq3T5hA== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Jonathan Corbet , Andrew Morton , Baolin Wang , "Jason A. Donenfeld" , Eric Biggers , Huang Ying , Petr Mladek , tangmeng , "Guilherme G. Piccoli" , Tiezhu Yang , Sebastian Andrzej Siewior , linux-doc@vger.kernel.org, Luis Chamberlain Subject: [PATCH 4.14 v2 12/15] panic: Introduce warn_limit Date: Thu, 2 Feb 2023 16:33:51 -0800 Message-Id: <20230203003354.85691-13-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768138963566782?= X-GMAIL-MSGID: =?utf-8?q?1756768138963566782?= From: Kees Cook commit 9fc9e278a5c0b708eeffaf47d6eb0c82aa74ed78 upstream. Like oops_limit, add warn_limit for limiting the number of warnings when panic_on_warn is not set. Cc: Jonathan Corbet Cc: Andrew Morton Cc: Baolin Wang Cc: "Jason A. Donenfeld" Cc: Eric Biggers Cc: Huang Ying Cc: Petr Mladek Cc: tangmeng Cc: "Guilherme G. Piccoli" Cc: Tiezhu Yang Cc: Sebastian Andrzej Siewior Cc: linux-doc@vger.kernel.org Reviewed-by: Luis Chamberlain Signed-off-by: Kees Cook Link: https://lore.kernel.org/r/20221117234328.594699-5-keescook@chromium.org Signed-off-by: Eric Biggers --- Documentation/sysctl/kernel.txt | 10 ++++++++++ kernel/panic.c | 27 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index b6124a4475fb7..fefffc8e6ac5c 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt @@ -94,6 +94,7 @@ show up in /proc/sys/kernel: - threads-max - unprivileged_bpf_disabled - unknown_nmi_panic +- warn_limit - watchdog - watchdog_thresh - version @@ -1072,6 +1073,15 @@ example. If a system hangs up, try pressing the NMI switch. ============================================================== +warn_limit: + +Number of kernel warnings after which the kernel should panic when +``panic_on_warn`` is not set. Setting this to 0 disables checking +the warning count. Setting this to 1 has the same effect as setting +``panic_on_warn=1``. The default value is 0. + +============================================================== + watchdog: This parameter can be used to disable or enable the soft lockup detector diff --git a/kernel/panic.c b/kernel/panic.c index 8e3460e985904..bfe6e4c5cd0e7 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -39,6 +39,7 @@ static int pause_on_oops_flag; static DEFINE_SPINLOCK(pause_on_oops_lock); bool crash_kexec_post_notifiers; int panic_on_warn __read_mostly; +static unsigned int warn_limit __read_mostly; int panic_timeout = CONFIG_PANIC_TIMEOUT; EXPORT_SYMBOL_GPL(panic_timeout); @@ -47,6 +48,26 @@ ATOMIC_NOTIFIER_HEAD(panic_notifier_list); EXPORT_SYMBOL(panic_notifier_list); +#ifdef CONFIG_SYSCTL +static struct ctl_table kern_panic_table[] = { + { + .procname = "warn_limit", + .data = &warn_limit, + .maxlen = sizeof(warn_limit), + .mode = 0644, + .proc_handler = proc_douintvec, + }, + { } +}; + +static __init int kernel_panic_sysctls_init(void) +{ + register_sysctl_init("kernel", kern_panic_table); + return 0; +} +late_initcall(kernel_panic_sysctls_init); +#endif + static long no_blink(int state) { return 0; @@ -124,8 +145,14 @@ EXPORT_SYMBOL(nmi_panic); void check_panic_on_warn(const char *origin) { + static atomic_t warn_count = ATOMIC_INIT(0); + if (panic_on_warn) panic("%s: panic_on_warn set ...\n", origin); + + if (atomic_inc_return(&warn_count) >= READ_ONCE(warn_limit) && warn_limit) + panic("%s: system warned too often (kernel.warn_limit is %d)", + origin, warn_limit); } /** From patchwork Fri Feb 3 00:33:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52243 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559054wrn; Thu, 2 Feb 2023 16:37:41 -0800 (PST) X-Google-Smtp-Source: AK7set89Df/wWQoxiqLuKcfr6Sdd1qlEuw5mV5ndewomJuvRPc/t1vGyeNr2LOohz4WVJQoRsEqH X-Received: by 2002:a17:906:194e:b0:87f:d17:66db with SMTP id b14-20020a170906194e00b0087f0d1766dbmr8474504eje.52.1675384661392; Thu, 02 Feb 2023 16:37:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384661; cv=none; d=google.com; s=arc-20160816; b=BFUYmr50OA5GfwQNFuFRnbk6kz0kH/L09dYgss1KzNuMgcNfjC62zaL7kbUOp5j/ve cpquFQUFxOW6louu+oy/SKHqHNOf+PcKXuDeVXlzgDVBIU0Pav8WWywPEzvGmQwl+wdr AR9778sk6j2KqKi4L/wkA7SuUE9FqHwgomRL72cZYg2r2Pywji7Ia0NAH7vJLRzSSE1n rzcvSc18lRI/uhHMR8iCJ0oMLgkkSZ6/RfpGF7gdh5MnFMYF2CIzNUrku+tt4+YYE8f4 9Rs2LUU8EmSH3QNAgTRRmqheIKwb8HSSdlomGDTX/2Kx5GaWshY2CrPlgnw7C+qC4PPQ 6QGA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=KShODiCHrK8JOCQiNfEgYJbJABpRgEW/1LscKILGpXw=; b=0Af8eBIppowBYwaxqGzb1TeZWrUBnMCgvW2VE+5QFqOFx/AkMvQ+Es5Di+hWpkKRLo 9RnCuOp6bbNQXaO2Oth1M89pVESngdIy4X96VnknVff2OKziRWJMRBER0itHciVUxJUA 0+AzRvA5dnCiTgmD0FmtmTKz5gWAXpzapr31aBNgWARSMM+Ob2/0NbNzcf+M0oC9+6LX vULm267DADgJG4sQWsH/Rff7/+9xyf4mfihEi0H+sGHkjO6F1PIuetGI5PDXKZL14pgf +RFi+snoJEWExJ7C0fa+aEPCfRjcimFRcYmlBgN1ZVCc2/ZQC0qkZ7K5+ChdOsAW4Uhg CzBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=B17f5OJM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ss2-20020a170907c00200b0086f53c24da4si1275872ejc.635.2023.02.02.16.37.17; Thu, 02 Feb 2023 16:37:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=B17f5OJM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S232900AbjBCAgI (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233034AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 017D064DBE; Thu, 2 Feb 2023 16:35:31 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 91CEF61D11; Fri, 3 Feb 2023 00:35:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 86034C4339E; Fri, 3 Feb 2023 00:35:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384530; bh=F6gV3Nc4RzN8pDwwOc0MdHuzOpEsbmsKn97m0ZuPXgY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B17f5OJMelAjPElARYnT7FyqrGvd/oWoBwQGQ8VlSWxMxns7+CSHbmNzj9TeIeu6h vQm3OeofonQwSdWq7zaejedjdWr3EZ7AF1lXfBv9kelGbB+sdXOGs8EZ016vW0vuC4 r1RLzx/MDkrIMGbf9qq4apMCdLOg26pA5Gqdxvs/iH6cAHioFE2Y5WZ+1qjKn9CnHZ JWITi1NKpT/PB6KqUNi+5OeO+tCOnAx+7YbetuUPm7nq/bzyQvanigNnP0h+ZRSdKy y94XuLBmpA+ccARLXyX8qLVYBiQ6w3HF+XyD4sA1JmC2n3MkLoYjKD7qDehDIGlzbJ EZDhCiq1F266Q== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Petr Mladek , Andrew Morton , tangmeng , "Guilherme G. Piccoli" , Sebastian Andrzej Siewior , Tiezhu Yang , Luis Chamberlain Subject: [PATCH 4.14 v2 13/15] panic: Expose "warn_count" to sysfs Date: Thu, 2 Feb 2023 16:33:52 -0800 Message-Id: <20230203003354.85691-14-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768146441393355?= X-GMAIL-MSGID: =?utf-8?q?1756768146441393355?= From: Kees Cook commit 8b05aa26336113c4cea25f1c333ee8cd4fc212a6 upstream. Since Warn count is now tracked and is a fairly interesting signal, add the entry /sys/kernel/warn_count to expose it to userspace. Cc: Petr Mladek Cc: Andrew Morton Cc: tangmeng Cc: "Guilherme G. Piccoli" Cc: Sebastian Andrzej Siewior Cc: Tiezhu Yang Reviewed-by: Luis Chamberlain Signed-off-by: Kees Cook Link: https://lore.kernel.org/r/20221117234328.594699-6-keescook@chromium.org Signed-off-by: Eric Biggers --- .../ABI/testing/sysfs-kernel-warn_count | 6 +++++ kernel/panic.c | 22 +++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 Documentation/ABI/testing/sysfs-kernel-warn_count diff --git a/Documentation/ABI/testing/sysfs-kernel-warn_count b/Documentation/ABI/testing/sysfs-kernel-warn_count new file mode 100644 index 0000000000000..08f083d2fd51b --- /dev/null +++ b/Documentation/ABI/testing/sysfs-kernel-warn_count @@ -0,0 +1,6 @@ +What: /sys/kernel/oops_count +Date: November 2022 +KernelVersion: 6.2.0 +Contact: Linux Kernel Hardening List +Description: + Shows how many times the system has Warned since last boot. diff --git a/kernel/panic.c b/kernel/panic.c index bfe6e4c5cd0e7..8f7bf0a8cef1a 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -28,6 +28,7 @@ #include #include #include +#include #define PANIC_TIMER_STEP 100 #define PANIC_BLINK_SPD 18 @@ -68,6 +69,25 @@ static __init int kernel_panic_sysctls_init(void) late_initcall(kernel_panic_sysctls_init); #endif +static atomic_t warn_count = ATOMIC_INIT(0); + +#ifdef CONFIG_SYSFS +static ssize_t warn_count_show(struct kobject *kobj, struct kobj_attribute *attr, + char *page) +{ + return sysfs_emit(page, "%d\n", atomic_read(&warn_count)); +} + +static struct kobj_attribute warn_count_attr = __ATTR_RO(warn_count); + +static __init int kernel_panic_sysfs_init(void) +{ + sysfs_add_file_to_group(kernel_kobj, &warn_count_attr.attr, NULL); + return 0; +} +late_initcall(kernel_panic_sysfs_init); +#endif + static long no_blink(int state) { return 0; @@ -145,8 +165,6 @@ EXPORT_SYMBOL(nmi_panic); void check_panic_on_warn(const char *origin) { - static atomic_t warn_count = ATOMIC_INIT(0); - if (panic_on_warn) panic("%s: panic_on_warn set ...\n", origin); From patchwork Fri Feb 3 00:33:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52242 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559040wrn; Thu, 2 Feb 2023 16:37:39 -0800 (PST) X-Google-Smtp-Source: AK7set+qQI65bDCjSocm1eREeFXMw5LPe56jrEfnamruqNZvWdwFXdJ14V/4Hhcf3ovBD7FLcA24 X-Received: by 2002:a17:906:d961:b0:88c:3502:56d4 with SMTP id rp1-20020a170906d96100b0088c350256d4mr8677274ejb.46.1675384659235; Thu, 02 Feb 2023 16:37:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384659; cv=none; d=google.com; s=arc-20160816; b=av3hd4gMpH6IjG1+kGpFZSJrQ4o/tfJiSbtQDcLnl3ANC0bCeLjnO1aNGj7zP9hEQg /iUWF5qbD7HRozjrhCfTBLgOCYfhbRRaviRe2+rwJxmdOm6CIZU2h+Xl3NjL/x1T6BVW rlIzNjS1FKj6eSHzFLwpR+zf/s83cGy/AJYIws0BLutDH15ovLwXNa7kGqG78iTPhLcR oZXDrLAu8zlYGQw1UC4MU2JrPGi4GKv5G2qWf2TkvHyTfcLI/X3axYctYfc2f1tACJ2W YL9FXM1LawAE/mOIibGk4vGWSJ2KbHCMRXMeJcx5uBFyZWyb7CLZt5r2ntjz0F+aw64J XrIw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=dPFanE1lIcKEepsAUbmGII6ZIu97CogO7PEHfoCPYow=; b=oXC88Lu4mbNA4abLqtKaPKBSajr3vcEErGj3sRM1JAG7U/Ti57gdWEaT0EulyzRb++ M/5dmvL1NandpjOw2k6i/L97ZUtkGdBgd0/SGaDj+ZEeFKGXoAHAkJmMc0K/4tmPCwNF Z+PVklwn0TdFua70Cd6rAoY/mjD2TtmAXnKG4TBKq1456dyhxXuyQZ0FxwOVQ7JmVbJ1 BmBhLnsoHRc2YTPlqe1KDW1KUG7ER63ULP5EkTkaBs6YTk+lVE7P8xhc6vdOPUCiKnYG ILdWt3sbi/4avPzEyLikG7q7xSCt6zEcCqLZTMW2yCrjctzH8viGZ85V0hrENmYe3BqH r3XQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RY6nyg6m; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ka14-20020a170907920e00b0087bd4fbff7dsi1069522ejb.712.2023.02.02.16.37.15; Thu, 02 Feb 2023 16:37:39 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RY6nyg6m; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S233478AbjBCAgD (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60894 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233038AbjBCAfe (ORCPT ); Thu, 2 Feb 2023 19:35:34 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D8EE6811E; Thu, 2 Feb 2023 16:35:31 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0AFB861D57; Fri, 3 Feb 2023 00:35:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B6C0C433A1; Fri, 3 Feb 2023 00:35:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384530; bh=jO10o07RAKyXXgWsy3XBxX0WTtST48LzT0RY2uOU2ZU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RY6nyg6mKaRHOHiJ/+iYACWYKOZujIyKZE5ymoG0EU46cWocUy6bBhYYKCpy2eTiF 7fxvtUqSBdZhe87XT5TAD867QP4ieiSgxZLOozRBT35wHtt9qPYwm3iaVBKvSx0aXt TVcA0IiI4goWzvvZSuzkEHcSRSY5g/k2tfzXLdSlf54oOuYpq4bxhu6dCFoPVKFioX r5qL0GdC2pJEXfgTGdho8aFMDMLhAbEOUP1FNkLX8Pt5wLxuj/bxm7yCs42wOF9xQ2 79BKhFfwzyiiiN6vMLNabmxCYdErCxfWvGgbW4sWiOGqezzHjJHBZMblcY8MYRr/cy u8QbiGA3/oAiA== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, kernel test robot Subject: [PATCH 4.14 v2 14/15] docs: Fix path paste-o for /sys/kernel/warn_count Date: Thu, 2 Feb 2023 16:33:53 -0800 Message-Id: <20230203003354.85691-15-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768144532624292?= X-GMAIL-MSGID: =?utf-8?q?1756768144532624292?= From: Kees Cook commit 00dd027f721e0458418f7750d8a5a664ed3e5994 upstream. Running "make htmldocs" shows that "/sys/kernel/oops_count" was duplicated. This should have been "warn_count": Warning: /sys/kernel/oops_count is defined 2 times: ./Documentation/ABI/testing/sysfs-kernel-warn_count:0 ./Documentation/ABI/testing/sysfs-kernel-oops_count:0 Fix the typo. Reported-by: kernel test robot Link: https://lore.kernel.org/linux-doc/202212110529.A3Qav8aR-lkp@intel.com Fixes: 8b05aa263361 ("panic: Expose "warn_count" to sysfs") Cc: linux-hardening@vger.kernel.org Signed-off-by: Kees Cook Signed-off-by: Eric Biggers --- Documentation/ABI/testing/sysfs-kernel-warn_count | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Documentation/ABI/testing/sysfs-kernel-warn_count b/Documentation/ABI/testing/sysfs-kernel-warn_count index 08f083d2fd51b..90a029813717d 100644 --- a/Documentation/ABI/testing/sysfs-kernel-warn_count +++ b/Documentation/ABI/testing/sysfs-kernel-warn_count @@ -1,4 +1,4 @@ -What: /sys/kernel/oops_count +What: /sys/kernel/warn_count Date: November 2022 KernelVersion: 6.2.0 Contact: Linux Kernel Hardening List From patchwork Fri Feb 3 00:33:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 52247 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp559492wrn; Thu, 2 Feb 2023 16:38:51 -0800 (PST) X-Google-Smtp-Source: AK7set/4f7VBaLBCKv+xbJZullPUQgKaeS8brvF/GljkdVaYM6CV+Z0VLVF14x4O6rCjZF0Y14cc X-Received: by 2002:a05:6a20:e617:b0:bf:58d1:ce88 with SMTP id my23-20020a056a20e61700b000bf58d1ce88mr3587765pzb.7.1675384730735; Thu, 02 Feb 2023 16:38:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1675384730; cv=none; d=google.com; s=arc-20160816; b=pNvd6vX/GSjvo+51+5v/N2MEiXdPSLMDbWU9E/6LMW61aZpW4k8WzYAffdtbiz2HEL MuTHxj65kcFnMIjt7jw0KkMS22agHegjpAiSsUuukspfAJRFPBfHmC1Qk9ychHvyH55o sbUXUXUWoht9VRfk5LbTH3F2HR1DtRIHk5M331FpLm0J4cwY0cBu/99aZeQxYrcSG8qw uOMDpBiKOfPRkIRfdl6NSWJcsrShAAMzi0dfKB2mNKICfyLJH88IGPyKeiINsT+LzlzD rt5KSb9WJhJuZWYRNOawtFwH/uArBR8YkF7wrLPa6ZyIPCFoIVNi21zvRv2tg1UlKRYm JcLw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=EoyZeKFTuj6PjT1Jlma2x2cQv/4ohmF5iE8HIx+4LJA=; b=XaLBDRi9pG+xt07fSYe30aiAuOZnSXMtT6CYWYhew8TJ2/dpJHsg+9gRRbaABBjTHF RgbLIY8SPozLoHhQ0TNfhAN5SeanYt6fa3x6eQRWmalFUQkyZjmTA6/xrzLXpt9JcT0T m2geVB0L1xaVjHkKjQ18BtDtQ7zVSH0KVz/KhE15LJfziIAAj8P1vcWKUyqz+5k45S7n DUDUt2kKS54MAgwIxm3599rJdaKp0mvgDzk5S81IYIsppG9QFvzf06BLiJzT32oCHuvm 97sAwt62R1wLGCztqN7wpRRAeaZ5AX+N+fm5M0NgKwpNQb+Xh1DpTsOyHLnPs5hGzOpj NslQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=AskTXGKN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q202-20020a632ad3000000b004785d1fa649si1022323pgq.432.2023.02.02.16.38.36; Thu, 02 Feb 2023 16:38:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=AskTXGKN; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 S231862AbjBCAgL (ORCPT + 99 others); Thu, 2 Feb 2023 19:36:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230456AbjBCAff (ORCPT ); Thu, 2 Feb 2023 19:35:35 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 80C4B63853; Thu, 2 Feb 2023 16:35:34 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 6E45DB828DE; Fri, 3 Feb 2023 00:35:32 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9CBC8C433A0; Fri, 3 Feb 2023 00:35:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675384531; bh=PezzPrlLFd7Q51QZ1OXqNb3IL9FpXtGge3PpuUfRJNk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AskTXGKNv4dDpus75Gb2sLGod2vudwgWs9UATxJTrwaz2NNXSiWF6tyhgQb2oUbNW a7al28Dx54wm8VqkXNTQqJ2uiMyqkbGofocd2dYH6S73PswXqgWomTdalJjH6EoagJ VeNUuF1FqHtjBAxad+Jotfz4jF/7YGcnNqIoPGZxxppEqFSJNHav7z+JoDQd+Z7QZx d+bzSDGLQzonYZH9Tb/KWiykeDn+03clGC9V2PHis3XB9v9D6jKsLH655baH6opWRn aySDUQIMJKhv+7xYh5pUIZqo471nBaNMfzV1b5/9HQH839iyb/t1t9uifJv0k0zaVi eJdz0fIN9wU/Q== From: Eric Biggers To: stable@vger.kernel.org Cc: Harshit Mogalapalli , Kees Cook , SeongJae Park , Seth Jenkins , Jann Horn , "Eric W . Biederman" , linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, Arnd Bergmann , Petr Mladek , Andrew Morton , Luis Chamberlain , Marco Elver , tangmeng , Sebastian Andrzej Siewior , Tiezhu Yang , Peter Zijlstra Subject: [PATCH 4.14 v2 15/15] exit: Use READ_ONCE() for all oops/warn limit reads Date: Thu, 2 Feb 2023 16:33:54 -0800 Message-Id: <20230203003354.85691-16-ebiggers@kernel.org> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230203003354.85691-1-ebiggers@kernel.org> References: <20230203003354.85691-1-ebiggers@kernel.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=ham 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1756768219666543371?= X-GMAIL-MSGID: =?utf-8?q?1756768219666543371?= From: Kees Cook commit 7535b832c6399b5ebfc5b53af5c51dd915ee2538 upstream. Use a temporary variable to take full advantage of READ_ONCE() behavior. Without this, the report (and even the test) might be out of sync with the initial test. Reported-by: Peter Zijlstra Link: https://lore.kernel.org/lkml/Y5x7GXeluFmZ8E0E@hirez.programming.kicks-ass.net Fixes: 9fc9e278a5c0 ("panic: Introduce warn_limit") Fixes: d4ccd54d28d3 ("exit: Put an upper limit on how often we can oops") Cc: "Eric W. Biederman" Cc: Jann Horn Cc: Arnd Bergmann Cc: Petr Mladek Cc: Andrew Morton Cc: Luis Chamberlain Cc: Marco Elver Cc: tangmeng Cc: Sebastian Andrzej Siewior Cc: Tiezhu Yang Signed-off-by: Kees Cook Signed-off-by: Eric Biggers --- kernel/exit.c | 6 ++++-- kernel/panic.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/kernel/exit.c b/kernel/exit.c index 73103e008a627..c0ff4461643d0 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -973,6 +973,7 @@ void __noreturn make_task_dead(int signr) * Take the task off the cpu after something catastrophic has * happened. */ + unsigned int limit; /* * Every time the system oopses, if the oops happens while a reference @@ -984,8 +985,9 @@ void __noreturn make_task_dead(int signr) * To make sure this can't happen, place an upper bound on how often the * kernel may oops without panic(). */ - if (atomic_inc_return(&oops_count) >= READ_ONCE(oops_limit) && oops_limit) - panic("Oopsed too often (kernel.oops_limit is %d)", oops_limit); + limit = READ_ONCE(oops_limit); + if (atomic_inc_return(&oops_count) >= limit && limit) + panic("Oopsed too often (kernel.oops_limit is %d)", limit); do_exit(signr); } diff --git a/kernel/panic.c b/kernel/panic.c index 8f7bf0a8cef1a..165fd747cebd0 100644 --- a/kernel/panic.c +++ b/kernel/panic.c @@ -165,12 +165,15 @@ EXPORT_SYMBOL(nmi_panic); void check_panic_on_warn(const char *origin) { + unsigned int limit; + if (panic_on_warn) panic("%s: panic_on_warn set ...\n", origin); - if (atomic_inc_return(&warn_count) >= READ_ONCE(warn_limit) && warn_limit) + limit = READ_ONCE(warn_limit); + if (atomic_inc_return(&warn_count) >= limit && limit) panic("%s: system warned too often (kernel.warn_limit is %d)", - origin, warn_limit); + origin, limit); } /**