Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp1389710pxp; Sat, 12 Mar 2022 08:59:30 -0800 (PST) X-Google-Smtp-Source: ABdhPJxvQxv0fcg7rDiQwcX5MhWF78+9ENCM8UgxosQxFzO4lDkx5HFyclQPuItt09oRwUPcqXRP X-Received: by 2002:a17:907:3e94:b0:6d1:d64e:3141 with SMTP id hs20-20020a1709073e9400b006d1d64e3141mr12419539ejc.213.1647104370593; Sat, 12 Mar 2022 08:59:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647104370; cv=none; d=google.com; s=arc-20160816; b=SyRko7xRKcLsRGY8x4jG7vi1NKKU8XDZleI7xe4ZVmUgm1/48/pgW73qe1fJa11fce slfnAwH3xYcEPqZcWPpK9kkQeA7faPDPJriAwVZ4EN0ip1aK+xBrWGgr2/GVnJL9j/ir 4X/O4iB5qpMxwWuBmdTXb2+Es7rvQtgfOoXAUsg9y07wjJzIvWDQBHbGCRTZLmDw9g0Y 0ybTmvO3kpE6VqnUAKxUGMhYNZGgV85IoETmpDEtfh/e1euMyAv9OJb/dWy909QEQ1l5 yLPuXJDClLKQJEpD+ayqj1lAnuAVpmli1waM9e6QmMti1w2RRmAZFTC80MWTNwBqWP0D ABcA== 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:dkim-signature; bh=XRw+YAJ4GLl11xdBATgXVNGTmbm0rcp15o7Ojv9QUYU=; b=RjOYS8MXPh2ci6YNjcMVCjM7PQfr7hTRc0a+c4kuv36N1BITzxM54cYsCLEl3CwRTA B6xcm3xhFbF3GDxr4nzQshCcjQnTRTs1R6nK76lit6FsR1VuFPY5pPONV2EoF0AONMEe 7zaozx3qwpCQblhiTXj2WUsHc62BuxXgFFs9An2pIrTIqqQupro96SwAS4MUgnOq/DJn j455JpbFJD8dWw432qr51QA5BuLsNturExeQftPqxeqh8axv8qMjF5EgWX0Ya2QxqQFu 2OjPIZhf/pBBp1uKwUIiVn7UhPrITkcBw1A2qq1S8vWet+RLRyJJXZhaNuGJLjOtbXf4 KBjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=HrPTJCVh; 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=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id o20-20020a170906775400b006cfea3fc8e2si6632636ejn.415.2022.03.12.08.58.34; Sat, 12 Mar 2022 08:59:30 -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=@bytedance-com.20210112.gappssmtp.com header.s=20210112 header.b=HrPTJCVh; 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=fail (p=NONE sp=NONE dis=NONE) header.from=bytedance.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230328AbiCLPYM (ORCPT + 99 others); Sat, 12 Mar 2022 10:24:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231184AbiCLPYJ (ORCPT ); Sat, 12 Mar 2022 10:24:09 -0500 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8A79E1C8 for ; Sat, 12 Mar 2022 07:22:43 -0800 (PST) Received: by mail-pj1-x1029.google.com with SMTP id mg21-20020a17090b371500b001bef9e4657cso13673744pjb.0 for ; Sat, 12 Mar 2022 07:22:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XRw+YAJ4GLl11xdBATgXVNGTmbm0rcp15o7Ojv9QUYU=; b=HrPTJCVhf/GjWoAVFjv1jesn4SLS7xZ6WBQSAqte9w3LiKSMPRIizxvT8wzrrhbToK 9qRsJ3il+CNF+NGoQaVWkhPS6TbxTn2z4Z2Dbhx/qyzfYn2NvOLurKE82w2ZDQ3N9KGr EsKLfYxLzD1e0kiaoVZujjMVufCe4SUxn3osfNe2yYd8E23tHMTsQ53ObFGsaxpcLo8F i2gUm7tRiIThup7jJftVOQM3wmnSC75QoZieflOK2ZNVdLvXfjhboFFYt5xIRqe2A6s2 J1qioIIsDwyy63tQd0njPVZdKOUQmgZZJ+rfkJkfVdcsH18vxmUufs3D06dg15TS7pnR O+2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=XRw+YAJ4GLl11xdBATgXVNGTmbm0rcp15o7Ojv9QUYU=; b=DYciCDVHj4PL1vk0BASQgxt7uQWh9jSMMdZ2P5Q3DN8NC1v/ldB49Yv2NLghi3Nzfm /NWvA9lSoCep4zKBl+J4HtCWmCXyG+YqL66FGRvxtupYTXMcbjguneJv+AeZp4JIwQff og0MfyFOV0+LVgl4r3PfgpvKqwdwiJEUKUgpGjPMKSfUpFfpK1RU+qDdMbtnDWzJt3aN wyPXqqlTX3MWGwRui0qlrTVBWqZDBrZkHQ2XWsI31GSUllTVfwZe9xnTtKaGHIu7jJ1t mutZIHmWwRACOJ0+sytXyCkbOB2XlCOwSYttGPOSaBESNhzThur2ZO3XbbF/xQEyVpXc W9bw== X-Gm-Message-State: AOAM531RSWFgOVBwAg/AQIe96TMPcAAXiSB5EAl8I+S1mKncpBjeE8y5 wHj4Wgk31PZFds/K/VbiHhl66w== X-Received: by 2002:a17:902:cec6:b0:151:e4a6:6af1 with SMTP id d6-20020a170902cec600b00151e4a66af1mr15233205plg.64.1647098563062; Sat, 12 Mar 2022 07:22:43 -0800 (PST) Received: from localhost.localdomain ([2409:8a28:e63:f230:50dc:173d:c83a:7b2]) by smtp.gmail.com with ESMTPSA id ay5-20020a056a00300500b004f6d510af4asm12974605pfb.124.2022.03.12.07.22.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 12 Mar 2022 07:22:42 -0800 (PST) From: Chengming Zhou To: jpoimboe@redhat.com, jikos@kernel.org, mbenes@suse.cz, pmladek@suse.com, joe.lawrence@redhat.com Cc: live-patching@vger.kernel.org, linux-kernel@vger.kernel.org, songmuchun@bytedance.com, qirui.001@bytedance.com, Chengming Zhou Subject: [PATCH v3] livepatch: Don't block removal of patches that are safe to unload Date: Sat, 12 Mar 2022 23:22:20 +0800 Message-Id: <20220312152220.88127-1-zhouchengming@bytedance.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE 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 module_put() is not called for a patch with "forced" flag. It should block the removal of the livepatch module when the code might still be in use after forced transition. klp_force_transition() currently sets "forced" flag for all patches on the list. In fact, any patch can be safely unloaded when it passed through the consistency model in KLP_UNPATCHED transition. By other words, the "forced" flag must be set only for livepatches that are being removed. In particular, set the "forced" flag: + only for klp_transition_patch when the transition to KLP_UNPATCHED state was forced. + all replaced patches when the transition to KLP_PATCHED state was forced and the patch was replacing the existing patches. Signed-off-by: Chengming Zhou --- Changes in v3: - rewrite more clear commit message by Petr. Changes in v2: - interact nicely with the atomic replace feature noted by Miroslav. --- kernel/livepatch/transition.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c index 5683ac0d2566..7f25a5ae89f6 100644 --- a/kernel/livepatch/transition.c +++ b/kernel/livepatch/transition.c @@ -641,6 +641,18 @@ void klp_force_transition(void) for_each_possible_cpu(cpu) klp_update_patch_state(idle_task(cpu)); - klp_for_each_patch(patch) - patch->forced = true; + /* + * Only need to set forced flag for the transition patch + * when force transition to KLP_UNPATCHED state, but + * have to set forced flag for all replaced patches + * when force atomic replace transition. + */ + if (klp_target_state == KLP_UNPATCHED) + klp_transition_patch->forced = true; + else if (klp_transition_patch->replace) { + klp_for_each_patch(patch) { + if (patch != klp_transition_patch) + patch->forced = true; + } + } } -- 2.20.1