From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 B68C43F7A95 for ; Fri, 10 Jul 2026 12:41:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783687292; cv=none; b=FfwVOpb5ihbhLNkmeR5kfv1NP0HLBPcI4L2JYvd39Ushpd/zcgQBLh0NYNt/cXfJW1kS8hfTM4dANMDoEee4ApHTWmogUjgP0sbHpQ2Fpp+g+L4U5i3Nln1eQp5eQ8z3/uPntSBLvbZb18V38cNfezCotJxDc5qCWuQCI8BXSgQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783687292; c=relaxed/simple; bh=Ou+QeNA96t/uH27tQkBFzC4ciWUAZKrc/tYhLp4H/ec=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=fecROz0/eqwxVLogO9rPQrgj4K3qRbMb/ndswtqi1osqVkB96LHEpCsoxoiOBMUArTmTkNiVP+lwOCo4+MOB2KqyF6bQbudwN9b2EYR024NlTr1Kkfrs4dAmmidL2gF9rpE7tt6cqzzsInV3mnXWsGBJOjDzGPpRsnTTvnN+Rg4= 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=Vwb+Umwz; arc=none smtp.client-ip=209.85.128.42 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="Vwb+Umwz" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-493ece78b0cso6857165e9.0 for ; Fri, 10 Jul 2026 05:41:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783687289; x=1784292089; 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:content-type; bh=Qh35ncbUpNA4+mhGWibuiDy9xo4hCCkUHZRzz0g7QTM=; b=Vwb+UmwzVSBq1kriBEcsrGRyI2XwTzmfg3tAOodC6nxlV8rI7xm3pkyq7Le5gq8YXB kv64o8EdZwd6SCh4Y74L+bA/zc8cdh+iQsj/7jS4IvTYoRytCMNbqcIqqtLbpcowdk2T JmSEsUmvoyodgaoyFqmYZmQtNy2XQOf4+2stzclq3NtZDKvpNeaQn8g7OICFzr2pxqJB ffIyiFZJ+jxkWM5Ls+G6J6k4RE2ZdgQN7kgSDGC+dfr5wDvOaAduSih118SzDpG7ztde fzhLBG+nXZCXm5kiTNicSyFeTLREhNQqi+WzJXxiiKT5knUKgSeAhWB9CuxkKXv95G+a Lr1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783687289; x=1784292089; 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:content-type; bh=Qh35ncbUpNA4+mhGWibuiDy9xo4hCCkUHZRzz0g7QTM=; b=pu+kc/oab1W81Dk3WNWKzxwj6g7DurW6MhTELxalvnmb0BXC7Iac/HYDOBoOCoOp4r FFZ+oIEvFFxK4s/ebPZ+THPqNQ0OKWkHI7kldhextFW2NvmOJ5otl67FVZwjtH/R6sxM Vr90+N/TkcIajJyWdZiu3w5294M6lVcKfboolYE1WQdyufAQnMLLnUGkSGsWjESQoiPD PZHyhG6aefihqVRiTAm+Ue6l8WW6UhwCsv7M8/SNRWwvnzGaV/Pfg2xqsv54hMYWVoim gDTfBvkSRZyHkgDQsgehDe5OmpYCBsRD6rFu6VrF+WMTx7/5GGPauKyQee9qEix0OAjg liCA== X-Forwarded-Encrypted: i=1; AHgh+RofQQw60CPAsW/dhcQ/owTXt5iyFWp6ipTR/iJsfZgNK8/gNoATezOrRgJO3JltPXan5iamoipxUz+L560=@vger.kernel.org X-Gm-Message-State: AOJu0YwtcSV7gtZmIDwdeCNakWSSwVgnECo3QHyjKrqh/Hrt9zEPIFmB DrR+NndN2NQT33DBo78cTNM4b0yJGJBVcAHjYd4J1YekDYI3ueIt4MS6 X-Gm-Gg: AfdE7cn1pawtV3MGpdZzwLBLsFWwibZNQucGLUOc/ErLXIWI6vdk0ncy869dvt3bn7r 4CnrbpOY8rkd8JFR7s8nx0tEbos38JyMJXKytFQWnNIXXhhsRNW3nBLyBZGgHYOexINml3krOF9 23ouwXfFAgtSP1luG9n2mG6rQtEEgyDl9ONqWbZey8eEXDlklnvs7vTBp/nONI2gKUSlG41oz4z UtBG7GeDhIC2Z/9fICoEzWD2zUhFcj0Acv7M2aMPvL2aDR95EepwgkUXJb7Ah9JD3D8mvEs6otE FXo5MCrT6df/5cWstYpMwv7VoR07C34mD//v2psHWrL6aAi0ZAquu/Qf7caLt0ggQiJaBVTyl8X LwDjz8DyhNTC7qIzP6pEu6t0PjAo0XhTpmNrkGTn2YpwylIwByka1ugxcLxCeh3CR5V0saZdyJl SQENZU2nEwj55AwYQ1UP3e0c1RAM4yViEjgFcerd9OAe0cy/JPvmYFvVFCnJsfoPLVALcS51Ln7 9PBu9KDsqqT0RFBEe9/GCtIjEKbwe2OOmXDE/8vU54kjgL+E8S+xuSW X-Received: by 2002:a05:600c:8b8c:b0:493:f744:e7d5 with SMTP id 5b1f17b1804b1-493f744e876mr5373875e9.38.1783687288603; Fri, 10 Jul 2026 05:41:28 -0700 (PDT) Received: from localhost.localdomain (dynamic-095-114-138-110.95.114.pool.telefonica.de. [95.114.138.110]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493eb73ae14sm133079545e9.11.2026.07.10.05.41.27 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 10 Jul 2026 05:41:28 -0700 (PDT) From: Karl Mehltretter To: Ingo Molnar , Peter Zijlstra , Andrew Morton Cc: Kees Cook , Vlastimil Babka , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Karl Mehltretter Subject: [PATCH] fork: Honor task_struct's declared alignment Date: Fri, 10 Jul 2026 14:39:57 +0200 Message-Id: <20260710123957.31774-1-kmehltretter@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Since commit cb7ca40a3882 ("x86/fpu: Make task_struct::thread constant size"), struct task_struct is declared __attribute__((aligned(64))) on all architectures. But fork_init() still sets the task_struct slab cache's alignment to align = max(L1_CACHE_BYTES, ARCH_MIN_TASKALIGN) which is smaller than 64 on architectures whose cache lines are below 64 bytes: e.g. 32 on ARMv5. In practice plain SLUB happens to hand out 64-byte-aligned objects anyway. With CONFIG_SLUB_DEBUG_ON the red-zone padding shifts objects to the requested alignment. With CONFIG_UBSAN_ALIGNMENT=y a boot on QEMU versatilepb (ARM926EJ-S, v7.2-rc2, gcc 13.3) floods the console with reports like: UBSAN: misaligned-access in include/linux/sched.h:2087:9 member access within misaligned address c295d7e0 for type 'struct task_struct' which requires 64 byte alignment CPU: 0 UID: 0 PID: 15 Comm: pr/ttyAMA-1 Not tainted 7.2.0-rc2 #1 VOLUNTARY Set the slab alignment to at least the type's declared alignment. Fixes: cb7ca40a3882 ("x86/fpu: Make task_struct::thread constant size") Assisted-by: Claude:claude-fable-5 Signed-off-by: Karl Mehltretter --- kernel/fork.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/fork.c b/kernel/fork.c index f0e2e131a9a5..b85cf1343329 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -857,7 +857,8 @@ void __init fork_init(void) #ifndef ARCH_MIN_TASKALIGN #define ARCH_MIN_TASKALIGN 0 #endif - int align = max_t(int, L1_CACHE_BYTES, ARCH_MIN_TASKALIGN); + int align = max3(L1_CACHE_BYTES, ARCH_MIN_TASKALIGN, + __alignof__(struct task_struct)); unsigned long useroffset, usersize; /* create a slab on which task_structs can be allocated */ -- 2.39.5 (Apple Git-154)