Received: by 2002:a05:7412:e79e:b0:f3:1519:9f41 with SMTP id o30csp27307rdd; Wed, 22 Nov 2023 08:32:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IE20mjZEx78LG3dBVHgfZMQ2ADboMv8992feKumt+soqzo4IZgDRDZcJej5t66HElKLVNV9 X-Received: by 2002:a05:6a21:3810:b0:187:7590:7f0e with SMTP id yi16-20020a056a21381000b0018775907f0emr2341334pzb.26.1700670744740; Wed, 22 Nov 2023 08:32:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700670744; cv=none; d=google.com; s=arc-20160816; b=eE6yEJMZtToBHSgCtsQBwIvDzQglyw57jBDANLd5EKzcDVd2U3wx4qkVGApxycTVAZ ixopn0v8ZTpOam0pGpCB0O6Ja5UPqeFU2mSgokeogFr802YXF6J3/soNzmU+opqDIVVJ Rz4z1YhsO1TfDh2CECj81Y3aDw5+K0MtciIiA42Ws1DEQdClPwAzPo7zaCFFfwncdY6Z R2JTfrTVyBoF7Mt0p0eXqMcBUIfiDWQJCUkO6WCIIU6AGFogkC6XzAMfYzG8ZlxOOGBH a47JC0PRCD0Ek+NwZOZX9+4DKPXlQP8GJUs2BFRq4R2GSpx1QHBIvHBK60VT/77BGAtT IZTw== 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; bh=/EYrnf/ZbB63lyuSv0fKQ4km7AIKVUkTF9kM/Ly2yKI=; fh=7axEUdnMUApK6aLYLrmxIYzEqwt8JUQTbtI9r8kD7PQ=; b=tDlc7nWNct5pVXibXZnrh/8yuk2jyB0kIAa92ZqwKX4MhuMrcubN9uCjiWSJC2YJta /cw8j9bEmr8dFyh4XUvvzEsTS+FAo/1y71o+5j9xjgzEQC3ihwkc1vSdGP1jKiRnsErJ zDXKlQGXvWn192SeAbphfSS+UDJDcDGpzQlD7/+1XOPo0Hch7wSKXarzumODJgh5I9F0 okpalWKUBNiZ6ao7nQcHMgONjlWq+5uEOaMMgQqwc1AjHnfDQg+q2w/FVDE2VcVudxJ3 UYNeTnQ3KgUkbpwK6r1UgC1bEpGyEnGUmNW5Rx6u85SKakYf3Z5VZ2+ILhwkFkyBLots CXIg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id d15-20020a056a00244f00b0068fcf194dacsi13326661pfj.92.2023.11.22.08.32.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Nov 2023 08:32:24 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id 6DBB78079CA0; Wed, 22 Nov 2023 08:32:12 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343587AbjKVQaf (ORCPT + 99 others); Wed, 22 Nov 2023 11:30:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231274AbjKVQaX (ORCPT ); Wed, 22 Nov 2023 11:30:23 -0500 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3C5521B3 for ; Wed, 22 Nov 2023 08:30:20 -0800 (PST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CF476C15; Wed, 22 Nov 2023 08:31:06 -0800 (PST) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.26]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 60F583F73F; Wed, 22 Nov 2023 08:30:17 -0800 (PST) From: Ryan Roberts To: Andrew Morton , Matthew Wilcox , Yin Fengwei , David Hildenbrand , Yu Zhao , Catalin Marinas , Anshuman Khandual , Yang Shi , "Huang, Ying" , Zi Yan , Luis Chamberlain , Itaru Kitayama , "Kirill A. Shutemov" , John Hubbard , David Rientjes , Vlastimil Babka , Hugh Dickins , Kefeng Wang Cc: Ryan Roberts , linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [RESEND PATCH v7 05/10] selftests/mm/kugepaged: Restore thp settings at exit Date: Wed, 22 Nov 2023 16:29:45 +0000 Message-Id: <20231122162950.3854897-6-ryan.roberts@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231122162950.3854897-1-ryan.roberts@arm.com> References: <20231122162950.3854897-1-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Wed, 22 Nov 2023 08:32:12 -0800 (PST) Previously, the saved thp settings would be restored upon a signal or at the natural end of the test suite. But there are some tests that directly call exit() upon failure. In this case, the thp settings were not being restored, which could then influence other tests. Fix this by installing an atexit() handler to do the actual restore. The signal handler can now just call exit() and the atexit handler is invoked. Signed-off-by: Ryan Roberts --- tools/testing/selftests/mm/khugepaged.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/mm/khugepaged.c b/tools/testing/selftests/mm/khugepaged.c index 030667cb5533..fc47a1c4944c 100644 --- a/tools/testing/selftests/mm/khugepaged.c +++ b/tools/testing/selftests/mm/khugepaged.c @@ -374,18 +374,22 @@ static void pop_settings(void) write_settings(current_settings()); } -static void restore_settings(int sig) +static void restore_settings_atexit(void) { if (skip_settings_restore) - goto out; + return; printf("Restore THP and khugepaged settings..."); write_settings(&saved_settings); success("OK"); - if (sig) - exit(EXIT_FAILURE); -out: - exit(exit_status); + + skip_settings_restore = true; +} + +static void restore_settings(int sig) +{ + /* exit() will invoke the restore_settings_atexit handler. */ + exit(sig ? EXIT_FAILURE : exit_status); } static void save_settings(void) @@ -415,6 +419,7 @@ static void save_settings(void) success("OK"); + atexit(restore_settings_atexit); signal(SIGTERM, restore_settings); signal(SIGINT, restore_settings); signal(SIGHUP, restore_settings); -- 2.25.1