Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp3372032pxb; Tue, 19 Apr 2022 00:33:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyh7eVLtaRjPaYP3oiugYatyqTgq3E9QJe2koegQ0TbLEULYnVzbwBjaPjYUyt/vVNKkg5A X-Received: by 2002:a17:907:72c3:b0:6e8:b602:9793 with SMTP id du3-20020a17090772c300b006e8b6029793mr11947245ejc.704.1650353594466; Tue, 19 Apr 2022 00:33:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650353594; cv=none; d=google.com; s=arc-20160816; b=BMggAn+XEYqOrGRhYnRmdNGPqnbOtHWxs7YEzfqE5lKNkxpfigMQ+HpkmriuhKAvym jmFQsKAOsDglnhXya6Ob+IvIQl2Qn2/CFrbJG+F/N6nYfT71YUqUWBOhW6fJdJNqc4NM Aga2VgqoNKaZP/y++V0gSnKoLglIGhEKB1No8whfO8yihbbuPwJkFMLhq6o191UP77J8 ngnTJuvg7MUNHV4mNgPoz9gtcNNJD2v6KT5rrHHvwzInlBwAumuhu1CyHz1GPiXOnl1J f/rLjGeFobUeah2F9cArD5lXTm5weRX3Zqjl3jygv5JCzLMeFf8cKEZa7zQyorA8cXNR bcBw== 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=g3Y/pg7s+qXO8NeOl8l2Tedz1VxbQj4Kypm9Yb/Uolc=; b=QcJU5A7zZ24j9sUdQpxMHMA1Zx+R4qZgGr/NFsuvr9DHHqGJX4EddsEMGta4Trpm42 Ld0L/5BCjP9SpsKWVsMHNZI8fhahysaVDURrI4/boNoMwDzDFZZXT+Qt9BiAHWW1+vMn +eQIVqklsmdXLXZr6MzD/un8+QA0E/jHFaAd+LBB63FYknNxB+h6fC3YR15gGRxQtIZA yKGVHlUPYdhnmoFC8cxROE+6quxEJi/o6oJWmMBUK8vvK/i05VZ+GDBcJ1M80XN7HPeM XCSSDGIlZOZPhtOIPPRq4kXMKiu7oQX0p5WEIjvkzGDNT9Qth1/V3RNc43guI2nvS3MW DPqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=XErRkIWJ; 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=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c9-20020aa7c989000000b00418c2b5be05si7543600edt.231.2022.04.19.00.32.49; Tue, 19 Apr 2022 00:33:14 -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=@linuxfoundation.org header.s=korg header.b=XErRkIWJ; 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=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242749AbiDRNS6 (ORCPT + 99 others); Mon, 18 Apr 2022 09:18:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242565AbiDRNAJ (ORCPT ); Mon, 18 Apr 2022 09:00:09 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B297B31362; Mon, 18 Apr 2022 05:41:34 -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 5CBE8B80EC3; Mon, 18 Apr 2022 12:41:33 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 976EFC385A1; Mon, 18 Apr 2022 12:41:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1650285692; bh=X5VqiY22ZhhGMKTjPjEHHjQro/Fe7DdjAuffpRjJ934=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XErRkIWJ5AIWgrBGB4LWoky2wOaXJPmNBkidcvDeNPBv3fH4gTzR/y2320ux05ij0 IbCgi9wXME4kj94Ss1g1qriidtXMt4gy/DaXT4zS2Wq51zBE7g8BkBkkQVC33E7+iS SmteZ2SfHwaDMkK7KAIu5i60BRFkRRfwhVqAdQaA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Nadav Amit , Thomas Gleixner Subject: [PATCH 5.10 092/105] smp: Fix offline cpu check in flush_smp_call_function_queue() Date: Mon, 18 Apr 2022 14:13:34 +0200 Message-Id: <20220418121149.248407638@linuxfoundation.org> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220418121145.140991388@linuxfoundation.org> References: <20220418121145.140991388@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=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 From: Nadav Amit commit 9e949a3886356fe9112c6f6f34a6e23d1d35407f upstream. The check in flush_smp_call_function_queue() for callbacks that are sent to offline CPUs currently checks whether the queue is empty. However, flush_smp_call_function_queue() has just deleted all the callbacks from the queue and moved all the entries into a local list. This checks would only be positive if some callbacks were added in the short time after llist_del_all() was called. This does not seem to be the intention of this check. Change the check to look at the local list to which the entries were moved instead of the queue from which all the callbacks were just removed. Fixes: 8d056c48e4862 ("CPU hotplug, smp: flush any pending IPI callbacks before CPU offline") Signed-off-by: Nadav Amit Signed-off-by: Thomas Gleixner Link: https://lore.kernel.org/r/20220319072015.1495036-1-namit@vmware.com Signed-off-by: Greg Kroah-Hartman --- kernel/smp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/kernel/smp.c +++ b/kernel/smp.c @@ -346,7 +346,7 @@ static void flush_smp_call_function_queu /* There shouldn't be any pending callbacks on an offline CPU. */ if (unlikely(warn_cpu_offline && !cpu_online(smp_processor_id()) && - !warned && !llist_empty(head))) { + !warned && entry != NULL)) { warned = true; WARN(1, "IPI on offline CPU %d\n", smp_processor_id());