Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp775670pxb; Tue, 12 Apr 2022 13:08:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyIqWu7lobmbNSCsg6mZYUy23IFZETmq85eRki/CDLk3/pq5fA9HQvJP0zIGhD2ze7vyUt7 X-Received: by 2002:a17:903:32c8:b0:158:72d6:90ee with SMTP id i8-20020a17090332c800b0015872d690eemr9236433plr.3.1649794108357; Tue, 12 Apr 2022 13:08:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649794108; cv=none; d=google.com; s=arc-20160816; b=cGOj/x8gcsbE4GGmGbKW97KuYdazUms95b/hu3TSqjBfs2NPv1oClbbbspHbTX59HE QrkKAhALuG294iM/GD/7rjd7UVL3uFB+fY3tx99CQC3xNclyyE57LVWQkJphF/LED/HB dSGUnEaZIswqmV7XEA3oI7TuGqrctgEYkeOOoDlFbTmqwYPmSU3EUPjqpmO1tXLuBLNz r7aU2emusC64gPIG/mF6W1n17ysLRVDWnCZH2pk07AJ2p5yG40ioDYqlNIZmJjPdFore DAU8MCrh5Q59xRoSYmsUh9IR6ljupa4LMAuQIBI1fhTyTAdpT2+j7/15jTWRsK7/jrSo F8Zg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=f8gdN3TGhHde4X0lrzNByT1eSh3b1azuUSnhAhs282g=; b=VLFbdfhpd04lCIPXGYdjxzG4md9hoS2KS/ILW2rxC0UuWO89ZU0M4dUaSGN2+5Y+HZ T2tcwMLjWmZAxNctclnpe5rEKSAEIKCbIdFQ2u452gvKvGTSmZvRKiFJTB5Ms37/cnx0 yaklpkx6VvK5Cpse9xwTsJmTU/GpiaEyak32cqTLpjZOy35tBvht9psgdWLRo2aYleeB XEGZ4LlenvlaW1HfWz4V0yVZMXASqZs7X0ObkaoM6LXXckjYs35tV5VFcqDNiMjtmk/o PH0RWolFmiphVjkNqEUAcS+U04C13snh3D2vQG59bF5riUte0Z4zPmKnPN3BMg1kcgWA i0dw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=zXmfWzAu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id y28-20020a056a00181c00b004fa3a8dff53si12733874pfa.10.2022.04.12.13.08.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 13:08:28 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=zXmfWzAu; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id EC1727F220; Tue, 12 Apr 2022 12:56:55 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1376594AbiDLILQ (ORCPT + 99 others); Tue, 12 Apr 2022 04:11:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43046 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353833AbiDLHZz (ORCPT ); Tue, 12 Apr 2022 03:25:55 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3773ABC3A; Tue, 12 Apr 2022 00:04:51 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id E811AB81A8F; Tue, 12 Apr 2022 07:04:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 416C3C385A1; Tue, 12 Apr 2022 07:04:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649747088; bh=3RUt2KxfRxSsYsWSSjP4U2KH/Rhc8qyzgbW8l/zg94U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=zXmfWzAuFelpLC+tFp7XMEycSHpN9QiOgfAg8mpu9op3Z0/rNMSM0SqF+Xs31wm75 NKxJbcWcV+kvoG6jUg4JAxfEXlmXpNViCoYW43wEUGPzXgp2vZkKWUF+hXo+KO1cnA 91z7d+BinHuH+ZhJl/1AXN51cVrO9CjFuPiQF0mM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Guo Ren , Guo Ren , Catalin Marinas , Masami Hiramatsu , Will Deacon Subject: [PATCH 5.16 238/285] arm64: patch_text: Fixup last cpu should be master Date: Tue, 12 Apr 2022 08:31:35 +0200 Message-Id: <20220412062950.532233422@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220412062943.670770901@linuxfoundation.org> References: <20220412062943.670770901@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no 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 From: Guo Ren commit 31a099dbd91e69fcab55eef4be15ed7a8c984918 upstream. These patch_text implementations are using stop_machine_cpuslocked infrastructure with atomic cpu_count. The original idea: When the master CPU patch_text, the others should wait for it. But current implementation is using the first CPU as master, which couldn't guarantee the remaining CPUs are waiting. This patch changes the last CPU as the master to solve the potential risk. Fixes: ae16480785de ("arm64: introduce interfaces to hotpatch kernel and module code") Signed-off-by: Guo Ren Signed-off-by: Guo Ren Reviewed-by: Catalin Marinas Reviewed-by: Masami Hiramatsu Cc: Link: https://lore.kernel.org/r/20220407073323.743224-2-guoren@kernel.org Signed-off-by: Will Deacon Signed-off-by: Greg Kroah-Hartman --- arch/arm64/kernel/patching.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/arch/arm64/kernel/patching.c +++ b/arch/arm64/kernel/patching.c @@ -117,8 +117,8 @@ static int __kprobes aarch64_insn_patch_ int i, ret = 0; struct aarch64_insn_patch *pp = arg; - /* The first CPU becomes master */ - if (atomic_inc_return(&pp->cpu_count) == 1) { + /* The last CPU becomes master */ + if (atomic_inc_return(&pp->cpu_count) == num_online_cpus()) { for (i = 0; ret == 0 && i < pp->insn_cnt; i++) ret = aarch64_insn_patch_text_nosync(pp->text_addrs[i], pp->new_insns[i]);