Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1420228pxf; Fri, 26 Mar 2021 07:32:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwiXjz0cOg5iUQ+I76+DLA3/wy+/xk9jpWkrBhhtTpy/5jJ4tbKyx4KhF8Zr0BdKAj9Pb7h X-Received: by 2002:a17:907:9858:: with SMTP id jj24mr15467119ejc.212.1616769131842; Fri, 26 Mar 2021 07:32:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616769131; cv=none; d=google.com; s=arc-20160816; b=ZAcT0Tg1Qg5jsa2GSm5Mv7l1vlC16ZFaeSGEogkqPkxGp6hB7HcYJylv7GzLComJx/ k4IlaBD/91rNkLnmDLwxrr0cdEWDuWOEflSgnj9GWLwdPSYo2z4T/85fY2uB6iUfGT4A 8ieaoEwOIBd6kFOxA/4Bkln/JnKFXjQD94F/PN8jRcDrjr6EOyODKwRhxu3VnALldLhz g23x/95MRuCyHIBr659zWKdbpN+aCjvd19u2DThkc0xVYP8QTb9lp5avvyZI+Nwytr9k 9YTpd+2IdjeboFr3tNbLPwuB8eEhfAY4F82glLfIooRKcCkn5zTWjrtPXpHwb4PfXewh IBkg== 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 :message-id:date:subject:cc:to:from; bh=rFBvc/8RuORqICN6Z3VFr5FpFx4K/bcUZLaTJArF/UI=; b=VTXSbmWsz3EyCAqBYK0J6bNZTxaeEHSx3tOs8yeY/jtBdj0dz8d2g+yD5EdsKqRq6C vCBYR5fj2WcbmXadu19INAWlGxFhOP25Q1+KGSIMnc5gWYfOS1YV2q+gNUufjhUZJw+D BdFemhZWqoEErASFwJjahCyhF/3LK1PUn04peRDgOYrHMDhuO9D+vrieU6C87sHXqCmr JfZPoj9nE4yUEgU42K/+Ev2pi0e8B7DuF+jwNvc69oz5nVSZsN9z9VY787NWiuAFsRNg o4gXteklPTkrIMh0nFa6/qkZa4bcuFTqSA64SLW15WNWj011EPCv6WKxioJyG5N/6rA7 7wlQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b11si7145288edz.197.2021.03.26.07.31.47; Fri, 26 Mar 2021 07:32:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230044AbhCZOar (ORCPT + 99 others); Fri, 26 Mar 2021 10:30:47 -0400 Received: from mx2.suse.de ([195.135.220.15]:50416 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229848AbhCZOaZ (ORCPT ); Fri, 26 Mar 2021 10:30:25 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 4E6F1AC6A; Fri, 26 Mar 2021 14:30:24 +0000 (UTC) From: Miroslav Benes To: jpoimboe@redhat.com, jikos@kernel.org, pmladek@suse.com, joe.lawrence@redhat.com Cc: live-patching@vger.kernel.org, linux-kernel@vger.kernel.org, axboe@kernel.dk, Miroslav Benes Subject: [PATCH] livepatch: Replace the fake signal sending with TIF_NOTIFY_SIGNAL infrastructure Date: Fri, 26 Mar 2021 15:30:21 +0100 Message-Id: <20210326143021.17773-1-mbenes@suse.cz> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Livepatch sends a fake signal to all remaining blocking tasks of a running transition after a set period of time. It uses TIF_SIGPENDING flag for the purpose. Commit 12db8b690010 ("entry: Add support for TIF_NOTIFY_SIGNAL") added a generic infrastructure to achieve the same. Replace our bespoke solution with the generic one. Signed-off-by: Miroslav Benes --- Tested on x86_64, s390x and ppc64le archs. kernel/livepatch/transition.c | 5 ++--- kernel/signal.c | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index f6310f848f34..3a4beb9395c4 100644 --- a/kernel/livepatch/transition.c +++ b/kernel/livepatch/transition.c @@ -9,6 +9,7 @@ #include #include +#include #include "core.h" #include "patch.h" #include "transition.h" @@ -369,9 +370,7 @@ static void klp_send_signals(void) * Send fake signal to all non-kthread tasks which are * still not migrated. */ - spin_lock_irq(&task->sighand->siglock); - signal_wake_up(task, 0); - spin_unlock_irq(&task->sighand->siglock); + set_notify_signal(task); } } read_unlock(&tasklist_lock); diff --git a/kernel/signal.c b/kernel/signal.c index f2a1b898da29..e52cb82aaecd 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -181,8 +181,7 @@ void recalc_sigpending_and_wake(struct task_struct *t) void recalc_sigpending(void) { - if (!recalc_sigpending_tsk(current) && !freezing(current) && - !klp_patch_pending(current)) + if (!recalc_sigpending_tsk(current) && !freezing(current)) clear_thread_flag(TIF_SIGPENDING); } -- 2.30.2