From patchwork Tue Jun 6 08:55:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Andrzej Siewior X-Patchwork-Id: 103679 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp3254848vqr; Tue, 6 Jun 2023 02:13:48 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4DQHpwj5yU8iX98tNx3x3w1NKBAuKIDFL9lwnGBInzAVZNuHtFolX1Bz1VrT4dyiqUw+pq X-Received: by 2002:a17:90a:1996:b0:255:c061:9e5b with SMTP id 22-20020a17090a199600b00255c0619e5bmr1245660pji.37.1686042828146; Tue, 06 Jun 2023 02:13:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686042828; cv=none; d=google.com; s=arc-20160816; b=hqZ9nbchEa0LDD/iOwK4oW7QbpsK2rPzV+0VFJerIJkgSlmjhTjWvmqrJkH0lu3P2G J3JT7sYEox+BMWHB8GNvxvAN1epTDvSB+mA1/192K2IiPOd0tjH81QRc8T6Yv6ZbPfx3 x/8iBkRwW525p4Vrtjnc6WsOrduU/M+sGmTX430NY6mKfLCyML6m6QZCTsz5V7dZcmc0 FroQrJi4gOYNgWDAQKUOaPYY391i7hx2UyPLrvxFZkBM8u+d5pz2+/udMydMD9CbygBw I1OLQch07O7poqGdLUjdZzsvshL3P+yqGe1kzKunAl6isUf8jt2D98GzkjzM32cptHG0 v1TA== 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:dkim-signature :dkim-signature:from; bh=FExOD5E8HJtGy/lm1D7DIYTsTEtzFIwKcZPbLrNzZPE=; b=eSqcBER6+buzhI8gf6/k2PQ5ViTtL/nYf4a2ZjGwqXlzC/ZLkgZCjYqxH0iAoPZcOs UbYEHCBtvSsdrJXwb6plSqnW1rezdgNmX0ZdZ89/3r34cMNjaZuDEKUR6J4/JCPLKuRg Tx5YV5Kv4ATS90ncRLd/Ihaxvdd/R2Q3k89TBNknXfmi9X0MV1ynFDlCT/e9TCyW20GY o8t8goyuXWNQpUBwHwgz0qkvWEtIJAjqhqeFyRcIt8goLDsTniOsqNQUc+v9ZNQTB68N Lprmdj55jKx/cde2HiNclPoxE9mQTdO4JlcFjCZfwaf2TjHVU1J3hTIIvd4/MhlN0T12 zxog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=tftlDy4X; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; 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=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g5-20020a17090a128500b00252d84b7af0si6960511pja.181.2023.06.06.02.13.36; Tue, 06 Jun 2023 02:13:48 -0700 (PDT) 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=@linutronix.de header.s=2020 header.b=tftlDy4X; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; 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=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235325AbjFFI4A (ORCPT + 99 others); Tue, 6 Jun 2023 04:56:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44672 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236627AbjFFIzu (ORCPT ); Tue, 6 Jun 2023 04:55:50 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E46EEA for ; Tue, 6 Jun 2023 01:55:48 -0700 (PDT) From: Sebastian Andrzej Siewior DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1686041747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FExOD5E8HJtGy/lm1D7DIYTsTEtzFIwKcZPbLrNzZPE=; b=tftlDy4XknmZgpUOkAK9spHUoXUymEYXhvGp8Mi84sBJhmSus1Q2hCVNc+glOyG0RkYJ4q XjMNM6qo0PSUnDMmWBHEdLb2BUYrAJCRwDEWe122xr8ft93TorEyGBfvd0TY5vqT7NrqvL QTDZiaysFVl/+k8vQwJzwTaE7dQPfFbB7FTkA1NMfxhvzdVA4rGyJVp0Yk0E/d9l08h5X5 Ptlb7RCUo4TiCcrEfmGI59m2HEjZql4d/8zUKlclohrDD1T9S2C7ki/RgNGvqYfcFYy6oG dJFHFGeqprFB5EfAdGTV468f2zKp7jZJMgheWy6523CHjQJDn+ZYq9NkLmYvCQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1686041747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=FExOD5E8HJtGy/lm1D7DIYTsTEtzFIwKcZPbLrNzZPE=; b=Qgdn5lAt6sr9Rgf+wlV5JethHHVroIcnnXwYK0rSnbfsrdjqYsviPU0ZyubGn58uCDQasW NKwkTEQplbPP0fAQ== To: linux-kernel@vger.kernel.org Cc: "Eric W. Biederman" , Oleg Nesterov , Peter Zijlstra , Thomas Gleixner , Sebastian Andrzej Siewior Subject: [PATCH REPOST 2/2] signal: Don't disable preemption in ptrace_stop() on PREEMPT_RT. Date: Tue, 6 Jun 2023 10:55:24 +0200 Message-Id: <20230606085524.2049961-3-bigeasy@linutronix.de> In-Reply-To: <20230606085524.2049961-1-bigeasy@linutronix.de> References: <20230606085524.2049961-1-bigeasy@linutronix.de> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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?1767944044240367394?= X-GMAIL-MSGID: =?utf-8?q?1767944044240367394?= On PREEMPT_RT keeping preemption disabled during the invocation of cgroup_enter_frozen() is a problem because the function acquires css_set_lock which is a sleeping lock on PREEMPT_RT and must not be acquired with disabled preemption. The preempt-disabled section is only for performance optimisation reasons and can be avoided. Extend the comment and don't disable preemption before scheduling on PREEMPT_RT. Signed-off-by: Sebastian Andrzej Siewior --- kernel/signal.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kernel/signal.c b/kernel/signal.c index da017a5461163..9e07b3075c72e 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2328,11 +2328,16 @@ static int ptrace_stop(int exit_code, int why, unsigned long message, * The preempt-disable section ensures that there will be no preemption * between unlock and schedule() and so improving the performance since * the ptracer has no reason to sleep. + * + * This optimisation is not doable on PREEMPT_RT due to the spinlock_t + * within the preempt-disable section. */ - preempt_disable(); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_disable(); read_unlock(&tasklist_lock); cgroup_enter_frozen(); - preempt_enable_no_resched(); + if (!IS_ENABLED(CONFIG_PREEMPT_RT)) + preempt_enable_no_resched(); schedule(); cgroup_leave_frozen(true);