From patchwork Thu Apr 6 20:57:12 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: 80535 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1310550vqo; Thu, 6 Apr 2023 14:26:42 -0700 (PDT) X-Google-Smtp-Source: AKy350Y0KTEVz0t+gPEuGK0QY0WEZFCe2rGROR5O2bXWD5jdkW8f6DlDsvxk2mfmEJMolqxnvlHx X-Received: by 2002:a17:90a:e7cb:b0:234:ac93:d715 with SMTP id kb11-20020a17090ae7cb00b00234ac93d715mr13044614pjb.45.1680816402677; Thu, 06 Apr 2023 14:26:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680816402; cv=none; d=google.com; s=arc-20160816; b=jC3SIGJGwecJ+2iY9MD0OQnJLPYalbgByUbEsAw7o7G3oexaOdm14qLcxjpcX2kWH+ iCtgu+RgveQmzhZIcAqQgr2vSG2AdOf089sjwEKOSv5BWK8Rla3/jsqhjMgz9M5DMdLZ PFp2UGpo38CR5hS6K4WKaMGEg/I1xJpV254fZEL0aEOTBzfR9K+4n1Wq+/kdx5/Gx0jQ CW5PqnTUrtcusHzSfhqWUpPtg+IZHS5kAJbK/UIVuNhG/LSl330jRzN31+CczVO5kAKD sqZdGEofdjBJiGFeU1UEwvQd9KRq1bYoStrv9vDntXnZ8x4Y5M+hbyGkAb95zcZzO2qn z4nQ== 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=nu76zb774yFa0MN+XeDDVckETU/rIQgmqAyiuYXOZF4=; b=lT3O9hJuGbmjW0CTUcpQv3zsn0NgXwoa/MhB1khvXSlG+RsHnTnGre2/PFoRJSq4Q0 BhOPq/vcEzSgjFpwA69lc1IKcI0daEbRA/gQqE625YXPqsYnleVIA/e3c4pp9C/Q8EN6 ri6j4EgDqkRqbOHVRqt+Xyo2baHkeJiEnXTTZMAh1mE/KIy6td1vfFJHaD2+VAABI4Vt 6z4eKNO+HMZIAJu4iJDgjZyHXG4EPCTBgfuBSAlJYziO2kOT8AwCrcvY68JNQpPkkvqx +kvxUxzj2ezOpp5tdCW/52Aw7oPaBBISBNzxGH1hcgAPXFOLogsK+Ex5aPhVUmYcYpDJ 3ulQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b="ok/5H9AV"; dkim=neutral (no key) header.i=@linutronix.de; 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 q6-20020a17090a430600b002400d82df5asi2049391pjg.57.2023.04.06.14.26.30; Thu, 06 Apr 2023 14:26:42 -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="ok/5H9AV"; dkim=neutral (no key) header.i=@linutronix.de; 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 S238615AbjDFU5Z (ORCPT + 99 others); Thu, 6 Apr 2023 16:57:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53456 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237796AbjDFU5U (ORCPT ); Thu, 6 Apr 2023 16:57:20 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 650C16589 for ; Thu, 6 Apr 2023 13:57:19 -0700 (PDT) From: Sebastian Andrzej Siewior DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1680814638; 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=nu76zb774yFa0MN+XeDDVckETU/rIQgmqAyiuYXOZF4=; b=ok/5H9AVhG4+VER7ECM77WvJqsQZU1sqfH0H6uB6goaWUVT7XjjvHYneCIQXhq5ZPxu7XM 0mv7+kQ0vFK1Zwu3OppSweFZGJTgKKd/3ijOeUjmlb22SU49pfp1ligy0ofAuPSjrZVN/G ViQCTIpnipT5yduH18OIIIGw/T7N+dDXE3pLwm46NWPCExLBpEfx+0i++TPoeOVHSO4d7S 7T5HbGYBCnwtIAN+JeiLB4dsi3/Vb8sdwxE8nfrkl8oQcRsb1ffnkL1K3DxLlFfvfe91MG XM9apuHzjpQQHgYQM1mGgvdLR1rSye7S7rb3c7tkt0/nirmRAplNQVGnf0qlVw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1680814638; 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=nu76zb774yFa0MN+XeDDVckETU/rIQgmqAyiuYXOZF4=; b=e3ECoxC2dOBtyRnv+0S4QRsRciqxy0q5gbj5g8fsovpTWXZaDSQSbtVJ2dpm4whxkszSxE aC/nrYE03vNxZ4BA== To: linux-kernel@vger.kernel.org Cc: "Eric W. Biederman" , Oleg Nesterov , Peter Zijlstra , Thomas Gleixner , Sebastian Andrzej Siewior Subject: [PATCH 2/2] signal: Don't disable preemption in ptrace_stop() on PREEMPT_RT. Date: Thu, 6 Apr 2023 22:57:12 +0200 Message-Id: <20230406205713.1843072-3-bigeasy@linutronix.de> In-Reply-To: <20230406205713.1843072-1-bigeasy@linutronix.de> References: <20230406205713.1843072-1-bigeasy@linutronix.de> MIME-Version: 1.0 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762463740294502897?= X-GMAIL-MSGID: =?utf-8?q?1762463740294502897?= 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(-) --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2352,11 +2352,16 @@ static int ptrace_stop(int exit_code, in * 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);