From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oo1-f74.google.com (mail-oo1-f74.google.com [209.85.161.74]) (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 AFA043CB2F1 for ; Mon, 23 Mar 2026 17:54:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.74 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774288447; cv=none; b=jA5CxQ9Jj5fo3Ab1hYBC0nMS8HPvwVrZzO6OIdpEd6VJeAVDAx4aRzv8baMtUK2/3kbz+zfhjSrsZ2LyxN0jDO3ao1SDC+hUD5MX8xSVITF2vmTUh/XfNJi1WYLSybP18pzhIhhX8BKnNGO0y4R7x7C/K8yQKDG5eav+Nlaiqz8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774288447; c=relaxed/simple; bh=wiZBFK4qXH25jZiOk6ppSpqqegoRmcuyypAI5viwsM8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=tYjKs1CCnqJZagANnNJpJk2gI6otGBhHVkD+7/LqOE0KuYHUDfCMd53trqJ/tTPXBwS5xobd/LMkNUMseO5DBK5JtZwl2axiiYWItI0gZZvECxfF9SJUoN0JTfbCIhF5ARqaU2uX2q6HfGVE8FSt6L1jJnxI6ahIo8MhhIKm8sI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--avagin.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=qfomn5Eo; arc=none smtp.client-ip=209.85.161.74 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--avagin.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="qfomn5Eo" Received: by mail-oo1-f74.google.com with SMTP id 006d021491bc7-67df391509fso6626730eaf.3 for ; Mon, 23 Mar 2026 10:54:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1774288445; x=1774893245; darn=lists.linux.dev; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=QvFV/sENwdGTW4IuMAnR3v5SRp3rVtVMFXWSWmq9Pi8=; b=qfomn5EoMyfHEf9rKW9eRapEuvVDYNMVmCebguurohHSBLay5Nic1WV0hFgx8fK+g4 07/DofxrxdfBdY+BFTnOtosmXubKXgPLXrTfGywAKn4Z7af1zZ8xJh7kT6kAu1/KeJW/ dh0dEIj+/s9YBlUjYe19AvSkz2kWcn0c+5pwA1ARdHFF1UUjAEwqsIypxQJcOT6/KQ1z DALhN2YnPS7NvjRr2sLLVRRy9pVyUCTlKyOeelFs/AIyPYMs9aOqngZSS4WHvc2JaIU/ Aw+WymWn1IarBUwmGHbvgZdQ/nxgFmUbASmoZO4kWICENUuze6+7XnQNP0fmwdDZsIPp g12w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774288445; x=1774893245; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QvFV/sENwdGTW4IuMAnR3v5SRp3rVtVMFXWSWmq9Pi8=; b=s86h9FOmMOO2iglr/zrQNcJa+UD1bJ8j2Odvbz6z59Ki0XuzIle+Tuuq443Gx6eufX jWLhpuNyiHpfChdbhuTS1IkuAtHQ8lKqFl6a/bQRtwtePVrOjjCtOwcQVX8389DivnAS F1VZIWNVfoQP3plHiM+l7Bp8CnN71IAOvpTmQcVAe3ntVoMU4WpoPWICsbzjAWa/FLAa 61QHD9X6JhCkS4lrRAEivrr2jyYSNrrkDIHriNOQFq3uNfI+WZR1Zb4g9EBOKNdXxh6D kgLpumU0GhUtGW0uDaU/D9Dmt4NRPSkd8UQXq2jBwndkdWAQY05Cm7+qxM802cVmrjKZ H7Pg== X-Forwarded-Encrypted: i=1; AJvYcCVeR35voHcJtuxbXIFtr9HwVGIiyTnNXL7IbPCud8Llbd3wcKeHaLnXxUPaiJydqc7XbjsM@lists.linux.dev X-Gm-Message-State: AOJu0YwgjmDDBDJ4arEGoMnud9os3oNpWCrzSmU4esbqzYTo1MCaS2jC q4Lkq5eRlgtx72m+zl0BTiXcDZ1XmIoSm8U/YV5dgcs7sgKJrrrBo1wVahIz9xDTv205LsIR37m 0p1q3Rg== X-Received: from ilbbq1.prod.google.com ([2002:a05:6e02:2381:b0:4f8:6375:8930]) (user=avagin job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6820:174e:b0:67b:d754:9524 with SMTP id 006d021491bc7-67c22f4ed5dmr9551868eaf.36.1774288444594; Mon, 23 Mar 2026 10:54:04 -0700 (PDT) Date: Mon, 23 Mar 2026 17:53:38 +0000 In-Reply-To: <20260323175340.3361311-1-avagin@google.com> Precedence: bulk X-Mailing-List: criu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260323175340.3361311-1-avagin@google.com> X-Mailer: git-send-email 2.53.0.983.g0bb29b3bc5-goog Message-ID: <20260323175340.3361311-3-avagin@google.com> Subject: [PATCH 2/4] arm64: elf: clear MMF_USER_HWCAP on architecture switch From: Andrei Vagin To: Kees Cook , Andrew Morton Cc: Marek Szyprowski , Cyrill Gorcunov , Mike Rapoport , Alexander Mikhalitsyn , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, criu@lists.linux.dev, Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org, Chen Ridong , Christian Brauner , David Hildenbrand , Eric Biederman , Lorenzo Stoakes , Michal Koutny , Andrei Vagin Content-Type: text/plain; charset="UTF-8" The HWCAP bits have different meanings between AArch64 and AArch32, so HWCAP inheritance is not applicable when switching architectures. Inherited HWCAP vectors can lead to unpredictable side effects. For example, bit 0 in AArch64 signifies FP support, whereas in AArch32 it signifies SWP instruction support. Fix this by clearing the MMF_USER_HWCAP flag in SET_PERSONALITY and COMPAT_SET_PERSONALITY if the architecture is changing. This ensures that create_elf_tables() will use the default kernel HWCAPs for the new process. Signed-off-by: Andrei Vagin --- arch/arm64/include/asm/elf.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index d2779d604c7b..2049d42e2e6a 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -160,7 +160,10 @@ typedef struct user_fpsimd_state elf_fpregset_t; #define SET_PERSONALITY(ex) \ ({ \ - clear_thread_flag(TIF_32BIT); \ + if (test_thread_flag(TIF_32BIT)) { \ + mm_flags_clear(MMF_USER_HWCAP, current->mm); \ + clear_thread_flag(TIF_32BIT); \ + } \ current->personality &= ~READ_IMPLIES_EXEC; \ }) @@ -223,8 +226,11 @@ int compat_elf_check_arch(const struct elf32_hdr *); */ #define COMPAT_SET_PERSONALITY(ex) \ ({ \ - set_thread_flag(TIF_32BIT); \ - }) + if (!test_thread_flag(TIF_32BIT)) { \ + mm_flags_clear(MMF_USER_HWCAP, current->mm); \ + set_thread_flag(TIF_32BIT); \ + } \ +}) #ifdef CONFIG_COMPAT_VDSO #define COMPAT_ARCH_DLINFO \ do { \ -- 2.53.0.983.g0bb29b3bc5-goog