From nobody Mon Jun 8 06:36:40 2026 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (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 849081A683D for ; Mon, 1 Jun 2026 12:50:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780318235; cv=none; b=rCGHfo823lfRUR4povFhgNYSt9bMwiZzZpVWbx+FZpfn/hLkVEN/7ZBEmcznAKmWC0/fuBSIdMgPbHfhHGNAbXRlnwN51iVjlEKC3I1k82jJMwEPQF9Bhjr0TVe/u78tIFGglMdqoCEu7SEx0pHSDD8qRPu009jc9ykt5eFXQ9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780318235; c=relaxed/simple; bh=wxhw3xx84Nnpaei+0cB6c43C0ML/bFHZg6nHgjopIDw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=r1nbLMluCfvEhugMaDhA/bYafKCZX/gVup8eHxr14iHthcWW8zOXkEiN1SBynxirBBfBeeRKlAlpt9zbeNcEJXhQ3HA1TwxOCnfmxvdSZcfx1MXT0puHPLlfE8YNRpX7b9xTMRDBjHv9cftcu80ftXyqOgxeeNHdsPWk+8uiFks= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=vYXGUk8C; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=jnHbUAkR; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=XAlpxXBo; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=YqcZM/CO; arc=none smtp.client-ip=195.135.223.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="vYXGUk8C"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="jnHbUAkR"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="XAlpxXBo"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="YqcZM/CO" Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id AAF26686B1; Mon, 1 Jun 2026 12:50:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1780318232; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=e5FMNbqVpITkHP0wn7Xclb3vHyL4/l08M2os5uv+gd8=; b=vYXGUk8C+Iew5cCqDmE8CZcsAReILvnZHcIv8MeWkN6s1AnnN9SnVqUr0uqLcE2RHOZqlm nkXKRjM4GM4IU3borFXUZCJpuNaluso59v6J92UEMM1+yrmhn7MUbUQUwjSj9uV6VbAkLY 2Kkd9eCpqMHu6v7pXp0xGrqr23VenSA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1780318232; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=e5FMNbqVpITkHP0wn7Xclb3vHyL4/l08M2os5uv+gd8=; b=jnHbUAkRSQd8iUAx18BxKKfl8y//DatwU107mliT5s190/iPAAztYrSZBjDqUzm5kJ3sqH McpyTfnJ8B7qblAA== Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=XAlpxXBo; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="YqcZM/CO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1780318230; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=e5FMNbqVpITkHP0wn7Xclb3vHyL4/l08M2os5uv+gd8=; b=XAlpxXBowJUpgxboL7j0s79yYqNtz93wZjEgSrhc+H9G0YMAOysXpfgo8TNpnJwq5Bz/EH 8YSlB6SVXr+6Mgfs/WL+UMq4r4Bigm9pazMtdFmv5EVHb7JV+uBWTS+scx9Gr9aP/Ebkv6 2iMe493CNoIW5s7K8d0KqNpuFPUHQyE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1780318230; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=e5FMNbqVpITkHP0wn7Xclb3vHyL4/l08M2os5uv+gd8=; b=YqcZM/COK2hWcyWoMvKhM1WgY+MnEzlUha0YC98i5/ej53M7s7AvGEbcg8revWZoJKg8M6 81sCXGFgYV7LbEBQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5686E779A7; Mon, 1 Jun 2026 12:50:30 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id sAb/EhaAHWq5HAAAD6G6ig (envelope-from ); Mon, 01 Jun 2026 12:50:30 +0000 From: Oscar Salvador To: Andrew Morton Cc: Dave Hansen , Borislav Petkov , Karsten Desler , linux-kernel@vger.kernel.org, linux-mm@kvack.org, Oscar Salvador Subject: [PATCH] arch,x86: Skip setting align_offset for hugetlb mappings Date: Mon, 1 Jun 2026 14:50:15 +0200 Message-ID: <20260601125015.216110-1-osalvador@suse.de> X-Mailer: git-send-email 2.54.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-Rspamd-Action: no action X-Rspamd-Queue-Id: AAF26686B1 X-Spam-Flag: NO X-Spam-Score: -3.01 X-Spam-Level: X-Spamd-Result: default: False [-3.01 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; MX_GOOD(-0.01)[]; RCVD_COUNT_TWO(0.00)[2]; RCVD_VIA_SMTP_AUTH(0.00)[]; FUZZY_RATELIMITED(0.00)[rspamd.com]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from]; MIME_TRACE(0.00)[0:+]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received]; FROM_EQ_ENVFROM(0.00)[]; URIBL_BLOCKED(0.00)[imap1.dmz-prg2.suse.org:rdns,imap1.dmz-prg2.suse.org:helo,suse.de:dkim,suse.de:email,suse.de:mid]; RCPT_COUNT_SEVEN(0.00)[7]; RCVD_TLS_ALL(0.00)[]; TO_DN_SOME(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DKIM_TRACE(0.00)[suse.de:+] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org Content-Type: text/plain; charset="utf-8" On x86, arch_get_unmapped_area{_topdown} set align_offset in order to avoid cache aliasing on I$ on AMD family 15h when 'align_va_addr' is enabled. Prior to commit 7bd3f1e1a9ae ("mm: make hugetlb mappings go through mm_get_= unmapped_area_vmflags"), we did not have to worry about that because hugetlb specific code did not s= et align_offset, but above commit got rid of hugetlb specific code and started= to route hugetlb mappings through the generic interface. Doing that has the effect of handling non-aligned hugetlb mappings to users= pace, which is plain wrong. So, skip setting align_offset if we are dealing with a hugetlb mapping. Fixes: 7bd3f1e1a9ae ("mm: make hugetlb mappings go through mm_get_unmapped_= area_vmflags") Reported-by: Karsten Desler Closes: https://lore.kernel.org/linux-mm/20260527143643.GO31091@soohrt.org/ Signed-off-by: Oscar Salvador Acked-by: Dave Hansen Tested-by: because that's what happened. --- So, let me say two things: 1) Karsten tested below patch and reported it was working fine for him. Did not stamp his Tested-by though, because it was not explicitly provid= ed. 2) This is a hack, I know, and I should probably be flagellated for this but since this is a regression, I went for the quick/easy-to-apply fix, so i= t can be easily backported. Having said that, I already made my mind to fix this in a better way, wh= ich would involve getting rid of hugetlb-specific code and do the masking off as w= e do for THP, but for that I need to refactor the code and that would not be so e= asy to backported. Just so you understand the reasoning behind. --- arch/x86/kernel/sys_x86_64.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c index 776ae6fa7f2d..60f876dce8e5 100644 --- a/arch/x86/kernel/sys_x86_64.c +++ b/arch/x86/kernel/sys_x86_64.c @@ -157,7 +157,12 @@ arch_get_unmapped_area(struct file *filp, unsigned lon= g addr, unsigned long len, } if (filp) { info.align_mask =3D get_align_mask(filp); - info.align_offset +=3D get_align_bits(); + /* + * Hugepages must remain hugepage-aligned, so skip adding an offset + * in case we enabled 'align_va_addr'. + */ + if (!is_file_hugepages(filp)) + info.align_offset +=3D get_align_bits(); } =20 return vm_unmapped_area(&info); @@ -222,7 +227,12 @@ arch_get_unmapped_area_topdown(struct file *filp, unsi= gned long addr0, =20 if (filp) { info.align_mask =3D get_align_mask(filp); - info.align_offset +=3D get_align_bits(); + /* + * Hugepages must remain hugepage-aligned, so skip adding an offset + * in case we enabled 'align_va_addr'. + */ + if (!is_file_hugepages(filp)) + info.align_offset +=3D get_align_bits(); } addr =3D vm_unmapped_area(&info); if (!(addr & ~PAGE_MASK)) --=20 2.35.3