From nobody Mon Feb 2 07:26:00 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1767696079; cv=none; d=zohomail.com; s=zohoarc; b=X1K6sOgYHYj6gv5EzO5E3Ml44F/QvPrrYCCPdtAgzEc5OQ9gV98I7y9z3OP8AJZaTZa2NyoKjyVRr/ihMdCVt631GVLTV8QbWGry83Zj2dW8rUC5g38OenX4KU7+WZ9aekDsr/tgIKtVZP3OSFi2kN+56Z/lw0zxiIliDYWKen0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767696079; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=yjF8ssDHk87DzFlqVHFgpqaHjjUpSwz53+LVg3DFaJU=; b=Rfe4hpkSgX2bMK8t6Ss5b8t2Ak1m+E69SpgSJnCti75nf3hrcH1fem3+cv+J0dVieb3H/X9Uxo4fsbpFbTl6Ka9hkS1Y9Q4ekZfiuGhcueC/nRRQRT77feQh7NLCCpLg2bZ/5qU7Z/w8/DqrU2dCrHrOzTH6jqHS1o0R6tn2XoE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1767696079752931.2207044743008; Tue, 6 Jan 2026 02:41:19 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id A3B7841A1A; Tue, 6 Jan 2026 05:41:18 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id F3A5041B4B; Tue, 6 Jan 2026 05:40:32 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 0869A419DC; Tue, 6 Jan 2026 05:31:48 -0500 (EST) Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 0C50F4198C for ; Tue, 6 Jan 2026 05:31:48 -0500 (EST) Received: by mail-lf1-f68.google.com with SMTP id 2adb3069b0e04-5942b58ac81so623109e87.2 for ; Tue, 06 Jan 2026 02:31:47 -0800 (PST) Received: from centos9.default.svc.cluster.local (broadband-5-228-116-43.ip.moscow.rt.ru. [5.228.116.43]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-59b65d5db54sm496743e87.64.2026.01.06.02.31.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Jan 2026 02:31:45 -0800 (PST) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767695507; x=1768300307; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yjF8ssDHk87DzFlqVHFgpqaHjjUpSwz53+LVg3DFaJU=; b=EAVVOPd4AgO5UEhkW5qy3tf5VPcF6kLdY4t126kfwfjWta3Ino65Ez+vZoFjKcYMq0 6cQLtCCqu7F58br6a1AUKyCgdKa8lKIK+ANjMs7/8cysY49hVA2mj9SuXy7zH4Y7UbQK ycqzGVat6Mv+0eeY0HaKWcHB6JqNbzqhaI/VFb2xapZgnuoEjfFe9C6Q0BYdPhOT43qv rM4Jf6kHbTt2UEbEUFBwLaVIdlgKMmOxpkFYEHC2IvwhG0f07TaWCtIwfHrAqOK/wOMI FfRYBedg2PjbxvAt17uCR4QeYqqOjKAcxp9hn2CbU34lNOYiPh0LLKffXe16NdI+7eP7 7tQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767695507; x=1768300307; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yjF8ssDHk87DzFlqVHFgpqaHjjUpSwz53+LVg3DFaJU=; b=d2bQYz11+lbgpYDzMXPHx8qmmAoHvVtIDB/yXp0AphlO8WeaStAMI+3T/4IVtBZkbk PexzG7IpotxSktyZvrnO23zPRCI6Ns/5Fcpsdgvy7zLMZ5uK/VU80diutQbMoTc/nvGo FC4HmVVmNLqPvj9ampAWENgZpsDZV87LKhvficS7c5emvdT7tomUTnTWJR/kHvSeJnng ooMB2JuVY+gu5WpQ/CO/89ZRAmF/FsPDnyB5GkgleKLi3Fi41pvEOxvlFKt61a4NKfZn HaA0LuHfdmoEFl8AHr+aDb3oaqilQDVOrTuNgQkREg0ZqrBlvJANT9YmZIUSx9QqgO+x LHtg== X-Gm-Message-State: AOJu0YxcPUf1CCNWP4EieAxVmUarbrAYRJ/Bqsr9dG+FY6LUyY0ykQoz yFWgmjv5GbuLKU29NhI4ZGEyfBdk5GVDisNtpRGj51/tFg8DuADwUuTGMyS8GFEgQw== X-Gm-Gg: AY/fxX68TKPhYMQjmCHAbWvA3I7UYXlH6P1pRpcAQ6UJ4X59CEW4WOceTtn2+mggj/x JT3sErnEX3gHw58+jYnkNZ4cgW0cGHujx2p6Bshn0+GHjJwtPr3qBhpxT6/uSa3HxzEh/TqdHPa 6HeeXgqgRm+vUdDtHA3rsCsVSubD7iA/eTuklYVw3+H7aUo0hpe8tALGmU++iQn06TKCUA0u7CK 2GOzB+KMoEu2QFFxdJazH/WOI1NSFamQ/ARPQlJ/PZBnzVi4pNnXkJ28TN77oAsxHXYUN+nWzjR nxtCPVhcv307o6zkGY/J6ok3R2mAKVwGJa7Pf0akWQeY6X0muKo9txmiknwvGxkJ2F6tUOZ2nwK FvqtTdApT/kbSdYl46ZB57r36WgzUbf8wlr2adUAJ4oY+l14yAifdmE7Rwfh1izoYsDSzh7+rH/ kHPmsAkF7/RNL1IfBRsKvEHkWm4822FNG8UNyPAdd45n6PgMUAWLRJAPRW0/Kr+fLxBii4AQ/Xi vozg66eyA== X-Google-Smtp-Source: AGHT+IG37yW3AF7wg+11PqlIcrA0wAtK0tV4hwELzlwpAnQxfXj+y07tvCpkSSDIRgI2hbX4GcSWVA== X-Received: by 2002:a05:6512:238a:b0:595:9d6b:1178 with SMTP id 2adb3069b0e04-59b6525b38dmr917930e87.40.1767695506303; Tue, 06 Jan 2026 02:31:46 -0800 (PST) From: Alexandr Semenikhin To: devel@lists.libvirt.org Subject: [PATCH] util: Fix max socket calculation Date: Tue, 6 Jan 2026 10:31:29 +0000 Message-ID: <20260106103139.101923-1-alexandr2e78@gmail.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MailFrom: alexandr2e78@gmail.com X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation Message-ID-Hash: COIBU2IGVLC36Q3FLXDL3W7U7WIFVPPJ X-Message-ID-Hash: COIBU2IGVLC36Q3FLXDL3W7U7WIFVPPJ X-Mailman-Approved-At: Tue, 06 Jan 2026 10:40:26 +0000 CC: Alexandr Semenikhin X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1767696081908158500 Content-Type: text/plain; charset="utf-8" This patch changes how the maximum socket count is calculated. On some systems (e.g. GB200), physical_package_id values are not contiguous or zero-based. Instead of 0..N, they may contain large arbitrary identifiers (e.g. 256123234). The previous implementation assumed a 0..N range and used the maximum ID value directly. This caused: excessive memory allocation extremely large loop bounds OOM / DoS scenarios unnecessary CPU time consumption The new implementation computes the socket count as the number of unique package IDs present on the node, rather than relying on the maximum numeric value. Signed-off-by: Alexandr Semenikhin Reviewed-by: Daniel P. Berrang=C3=A9 --- src/util/virhostcpu.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c index 09395ddb04..113aa6881e 100644 --- a/src/util/virhostcpu.c +++ b/src/util/virhostcpu.c @@ -331,6 +331,8 @@ virHostCPUParseNode(const char *node, int siblings; unsigned int cpu; int direrr; + g_autoptr(GHashTable) st =3D g_hash_table_new(g_direct_hash, g_direct_= equal); + gpointer sock_resolved; =20 *threads =3D 0; *cores =3D 0; @@ -356,15 +358,29 @@ virHostCPUParseNode(const char *node, if (virHostCPUGetSocket(cpu, &sock) < 0) goto cleanup; =20 - virBitmapSetBitExpand(sockets_map, sock); + if (!g_hash_table_lookup_extended(st, + GUINT_TO_POINTER(sock), + NULL, + &sock_resolved)) { + g_hash_table_insert(st, + GUINT_TO_POINTER(sock), + GUINT_TO_POINTER(sock_max)); + sock =3D sock_max; + sock_max++; + } else { + sock =3D GPOINTER_TO_UINT(sock_resolved); + } =20 - if (sock > sock_max) - sock_max =3D sock; + virBitmapSetBitExpand(sockets_map, sock); } =20 if (direrr < 0) goto cleanup; =20 + if (sock_max =3D=3D 0) { + g_hash_table_insert(st, GUINT_TO_POINTER(0), GUINT_TO_POINTER(sock= _max)); + } + sock_max++; =20 /* allocate cores maps for each socket */ @@ -400,6 +416,16 @@ virHostCPUParseNode(const char *node, =20 if (virHostCPUGetSocket(cpu, &sock) < 0) goto cleanup; + + if (!g_hash_table_lookup_extended(st, + GUINT_TO_POINTER(sock), + NULL, + &sock_resolved)) { + goto cleanup; + } + + sock =3D GPOINTER_TO_UINT(sock_resolved); + if (!virBitmapIsBitSet(sockets_map, sock)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("CPU socket topology has changed")); --=20 2.47.3