From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 388AC382291 for ; Tue, 14 Apr 2026 07:46:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776152789; cv=none; b=uj4WBAf9af1o9b0aSb3xQTE6rmLi57Hk4m1QDPutEWFfcJ6KwtILYZZc5bV+0+51Z91dOCJ+C2T5EsVNI+iM/l/AaT9jBuU2L64fkW6ureg5Sa6VOdW56LYYXw9TaZWSyqMiYlu/kSFkfFpgO0WYf/Q/JHcKkSy5lUS3gBRmIL8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776152789; c=relaxed/simple; bh=3phGaYQxAfCAd41yP5l0xdzxEPt5k/UjkowtvAHD/mo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Tbusmgdj0vymbremBjx6e3vmVnJXGTYxfRRfyld+WK/n0huYY7EXb+FeJd2uERe8N/qTSnTVOYBJA01rDqrOXd5u4EIIavb+xEjBxbxNqGw8TZTSVRAq48j2CjXnjnuJjmdnh4t1dRZjvUl086BoFxWDmqI4qRvU94JK8OVePqg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BsgogPdP; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BsgogPdP" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4852b81c73aso49479695e9.3 for ; Tue, 14 Apr 2026 00:46:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776152786; x=1776757586; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=DJslfFXE+fspzmyWC1Z5fis1Wg4viT3ssY5/fUmW1CY=; b=BsgogPdPPzYA5sRA2YfP18cfbf22H6e5JdFpXUy0MCCd3QBdBxLLFCFe7wT4AVIdcA dl+7WBsa9kh0CYxDIbQw43FK/UgLli3JIdNULaGX+VjAumt5OBhgQ3JiNRw/zdpwQFIY Si0mjAcz08xzrXoTDikLJXy/VqAQrEgyvvlcxEG4NppJYUzfZaMN5zc+3acweyvvUiWd PCUzstYkMe5778n+bQDHe/mBqY8wZHkKelVGTcpGf/4JqwPQ1b69N0KJIerkw+Q70wJy gaqHLhaVUYtktuCY0hwf2z51XV2yQQKO+EhaQJdta+5sDeUwdP0iTvW/vJZSRa7y4zHB j5Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776152786; x=1776757586; 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=DJslfFXE+fspzmyWC1Z5fis1Wg4viT3ssY5/fUmW1CY=; b=KYOj2iKqitQuoBUcG6lzZtHSmROEK1MoND4lG0DDJwzgog/VErfIsVHCL6uK+x/seN qrbQRLWzrBFiZ6Zf5Xg/9hCHs5FohaNvpuBn2mio7LsQJIEHF5KEBpCYyQEB3HLQU1Un N9RwM1Lvp16yPWMuECEfpdgejOz5GkUSWGXzOnbDv4FWQRwbElca6bBcpELs8fzHEzQT KHIHPIkCUKTPRHzWrHSZCQlkUZIwdW7ech8lsF2jrYqURVx7VhRVc9KMRReb/y0XsFvP GjHx7eXMh9PwbnSjZV0YwzxqAniDYE+Z3qDVmHZbH8DzD/FUO37w9i19XJ4OohHo5tM8 9qkQ== X-Forwarded-Encrypted: i=1; AFNElJ+s1TvE7jWexAgaPiRvWIpg1CAXeNuaGZ2SVFd0sroEhI9vOznIx7yo4o3dPTZNw3nB8jBk6yxxHQ3j36U=@vger.kernel.org X-Gm-Message-State: AOJu0YzUxvDnGU0mGjj5Q8HwEMcw8LW5sNzsWtpx9SM3qMPrVh34D0OO 9zy6QoDF2psmlUPySITmViMhFVkdLTZGcysKaEzonduQ/OIhmR2X5yDb X-Gm-Gg: AeBDieulbPLdIU30Uog3ybV/+Gi+QPPJyLPkFxRCEnJTqGT3ktzgbJ9SToCn3rl0Axz oh2wGkv1nv/ygvNrWmYhNwJ9NLBPAlTyOIRU4l8rjoYvoMLp7Qv+56oxl1J9inMbf3Ns4T89EBx 8ioMd4wIAl8XGaXxRERheYUsz3o9BEA1rO3u/iCY0sgl6KPXo47ll16+wbIeceCqmdJJ327b+oL 0mOBejHZ4r43DmPSz9AZDB19rSj3l+Ae5O2I1AUgtGKqGz3bq0RUXIK4ZGWJBPjob+U3GICPYh6 6ucnc+qHDtby7AlPTxBzHZqAWtZtlyjwZstT6qWzY3DGDbDSLglrxp6acMbTQUat+D0dV2vTjDa 7fgZSwPP7s/e+B//yBnWkoMW1hmn43Ua0/Kuha+WolFSm1CJbJXsBqyutaj2YAyeciM8IF1C7Zt 8AfIyZ6AO4skW0K834iTlAVvaX4dWccIdC2rN7Ozk1CTBjeWZROXtMVWqxW+HMDp7OVt6nIoa48 88pp7JdLNEH/HQHgJe4WiDKSlkUK9KMh9CKBI+nrfLSM/6oTZDWWSo= X-Received: by 2002:a05:600c:a109:b0:488:af7f:7751 with SMTP id 5b1f17b1804b1-488d6836508mr158055525e9.15.1776152786361; Tue, 14 Apr 2026 00:46:26 -0700 (PDT) Received: from fedora ([193.77.86.199]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488eddba112sm32076755e9.0.2026.04.14.00.46.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 00:46:25 -0700 (PDT) From: Uros Bizjak To: x86@kernel.org, linux-kernel@vger.kernel.org Cc: Uros Bizjak , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , "H. Peter Anvin" Subject: [PATCH -tip 0/1] x86_32/segment: Always return correctly zero-extended values from savesegment_*() Date: Tue, 14 Apr 2026 09:44:41 +0200 Message-ID: <20260414074613.77330-1-ubizjak@gmail.com> X-Mailer: git-send-email 2.53.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit On 32-bit x86, reading segment registers into a 32-bit type can expose undefined upper bits on older processors (e.g. Intel Quark X1000, Pentium, and earlier), where bits 31:16 are not defined. As a result, undefined upper bits may be stored in variables (e.g. saved_fs and saved_gs in apm_32.c), structures (e.g. thread_struct.gs) and arrays (e.g. elf_gregset_t[]). Some of these are later used, for example in process_32.c::__switch_to(): if (prev->gs | next->gs) loadsegment(gs, next->gs); which results in unneccessary reloads. Introduce __seg_return_t as an intermediate type for __savesegment_*(): u16 on CONFIG_X86_32 and unsigned long otherwise. This ensures that __savesegment_*() returns correctly zero-extended values in all cases, avoiding propagation of undefined high bits on 32-bit systems while preserving existing behavior on 64-bit. A follow-up patch can remove the majority of zero-extensions by addressing a long-standing XXX comment in thread_struct and reusing gsindex instead of gs for 32-bit x86 targets as well. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Borislav Petkov Cc: Dave Hansen Cc: "H. Peter Anvin" Uros Bizjak (1): x86_32/segment: Always return correctly zero-extended values from savesegment_*() arch/x86/include/asm/segment.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) -- 2.53.0