From nobody Sun Feb 8 00:26:09 2026 Received: from 1.mo583.mail-out.ovh.net (1.mo583.mail-out.ovh.net [188.165.57.91]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3188240F8F5 for ; Tue, 20 Jan 2026 10:38:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=188.165.57.91 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768905500; cv=none; b=VVIHjMDb4HLch+1Ek8Fu0SFtVNAQPdwSJpjeMGuhL1oS5KQBcTH0cmOmLSszuTZaP2pf5amjOGOsR2pCMnmESmmMOtUR9nd3l8i2C0LPcRmPs3Pgxen5wkxuNMlIRIn86Ad9FFjq1dHYcMVKvzLQiSnwnCaBKFZ8PxXwV6CZ7S0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768905500; c=relaxed/simple; bh=NSYXHGwUp2vztJN22X3sapNmHmz4gMZdhbVVehTGoQI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=I2k1aCNEHUtokMyi9vygUFtTHqL6N2D1ycFvHcQtFa1seG1quTMnKf07ucwDxGqyiHEc2zDJ7L+qIczIUYLqXDSVssqzNxAuO6RF+VX9REr+W6oq9cBIqb1H2XZ3IgOfmawHcHd57SLjyPLqYp2WJBbFcqBk7cymtEmS85lyerQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=formalgen.com; spf=pass smtp.mailfrom=formalgen.com; dkim=pass (2048-bit key) header.d=formalgen.com header.i=@formalgen.com header.b=GQRMXfaR; arc=none smtp.client-ip=188.165.57.91 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=formalgen.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=formalgen.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=formalgen.com header.i=@formalgen.com header.b="GQRMXfaR" Received: from director4.ghost.mail-out.ovh.net (unknown [10.110.58.177]) by mo583.mail-out.ovh.net (Postfix) with ESMTP id 4dwMns3dw3z6PWQ for ; Tue, 20 Jan 2026 09:43:13 +0000 (UTC) Received: from ghost-submission-7d8d68f679-znm2l (unknown [10.110.96.204]) by director4.ghost.mail-out.ovh.net (Postfix) with ESMTPS id 0B195C28C6; Tue, 20 Jan 2026 09:43:11 +0000 (UTC) Received: from formalgen.com ([37.59.142.107]) by ghost-submission-7d8d68f679-znm2l with ESMTPSA id RqWJMC9Ob2nVigoA5+h44Q (envelope-from ); Tue, 20 Jan 2026 09:43:11 +0000 Authentication-Results: garm.ovh; auth=pass (GARM-107S001026b955c-1aad-418e-89ae-ca125f1fc0e3, BD04578FE93AF9D298F1B82426988FE6DFB30C64) smtp.auth=david.desobry@formalgen.com X-OVh-ClientIp: 90.91.42.105 From: David Desobry To: tglx@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com Cc: x86@kernel.org, hpa@zytor.com, linux-kernel@vger.kernel.org, David Desobry Subject: [PATCH] x86/lib: Fix num_digits() signed overflow for INT_MIN Date: Tue, 20 Jan 2026 10:42:58 +0100 Message-ID: <20260120094258.41313-1-david.desobry@formalgen.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Ovh-Tracer-Id: 5634284610374781899 X-VR-SPAMSTATE: OK X-VR-SPAMSCORE: 0 X-VR-SPAMCAUSE: dmFkZTEHXCaWxujEhM/miHqFM42Qao4NwzwKsLN91rztLRdioEXNhjwo11Ks2vNTU1u8Uv6uz37ugfF18wfGHT3YbJ6o8A1M+pug3Y6VE8o1Uz62TKn5mJm7Qwxdgwrqr7Q52798i9BxvgJlvHixziKazSK8SSw8dclEpGL42btlHoGz1ujPRWabEEdwstp8v9XU7QihZg5aYgl4hPJlbTmWTxXQmcAJdjVKrk7jL64vHq+WZBuWAGh1r5QyBBI+9i+SAE/0iLZxNvVuSKRZFqslNK1WZeDrfnCLBGacDqC+0onWMosWBvNpodGlzdboxEnOGlylJMxenKmc05wX9msAlA9lDSYGPO94CzhUvsPUAEd2+dXA16opTjU6j28L40jlA2YLJtlm8XqVQHtCSRvT5diE0VT2lV6nB0qpihn+WoHVZ3SrCAGrae5sObFtdIaNs+5cs6ztuhS2yJNRkeu+onV9AL6w0Ebul5PxAeWs3SJRedHGhIFUruLpFajJMqnkv8fl1Luh6WZx4z2sJnKd8E93ZpRpirg7bM0IUguejcfCLXdeb2Jm2MwdYKvKPld6fEehV/7IINyV8BCpV/5HEQxrmevPARzd8GXAOjQMyBwYBF8T95RyP1ZfrE6X3otwi+Grdvcozr49UlvlDs9h60IcDZLImjyfhe93S8ybXMSx5g DKIM-Signature: a=rsa-sha256; bh=umZAL4A2KwPqARKvXOquxReV9VMTgTUFdXQwBjFnVgg=; c=relaxed/relaxed; d=formalgen.com; h=From; s=ovhmo-selector-1; t=1768902193; v=1; b=GQRMXfaR7nH+KIkGU+6TVoSYYCuY6DlJtCxgAj6UAL56S1N0vr39ivXQioV9b8o1OYTeARdX +Ch5FWsXVh+mmMww2Bstctas6BcMbdE02IkNMezYkw0MwQ91kEjgkxXM9wGUnDqmOaeIPzirM/k 0g2ej38ReJoPt5EF6d1coKa6K97JYMPYcGSJr9HhzEA2tbZvuuRgd/uLX0+F+keyK8yDSXkHau8 h+htFSzzqb6iE4OYkqcl+Oj26Qm9SGw3skg81dPTOoGbQqCRf0aO4fOm8ahtV4IUu0H9+MMHLF8 2i3tT4u+P5oUJeDyMLDEBmh/VFc0ZNO0WJQlKDetSmhFw== Content-Type: text/plain; charset="utf-8" In num_digits(), the negation of the input value "val =3D -val" causes undefined behavior when val is INT_MIN, as its absolute value cannot be represented as a signed 32-bit integer. This leads to incorrect results (returning 2 instead of 11). By promoting the value to long long before negation, we ensure the absolute value is correctly handled. Signed-off-by: David Desobry --- arch/x86/lib/misc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/x86/lib/misc.c b/arch/x86/lib/misc.c index 40b81c338ae5..c975db6ccb9f 100644 --- a/arch/x86/lib/misc.c +++ b/arch/x86/lib/misc.c @@ -8,15 +8,16 @@ */ int num_digits(int val) { + long long v =3D val; long long m =3D 10; int d =3D 1; =20 - if (val < 0) { + if (v < 0) { d++; - val =3D -val; + v =3D -v; } =20 - while (val >=3D m) { + while (v >=3D m) { m *=3D 10; d++; } --=20 2.43.0