Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4573169ybl; Mon, 13 Jan 2020 16:21:15 -0800 (PST) X-Google-Smtp-Source: APXvYqwW73jzchOXr7jL1A4njW2uOprwUU4UdTfTHGYeAujCuTCAuEYzyohDCxb0/fiyi4WgXozS X-Received: by 2002:a05:6830:120b:: with SMTP id r11mr13762883otp.254.1578961274756; Mon, 13 Jan 2020 16:21:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578961274; cv=none; d=google.com; s=arc-20160816; b=EeAvWkClwZQgCaxV064oIt1J4QrW6KyfuDXsm5tWngxp6ztvHUTyeijunpLp+ag2EV B9epvwXgkgER/cfm3rRO3Qs7qHdbfmtT8r2FzHf5YH25JnS1XkjNHcWhDu6OfTXSUr6a 0S2dTOS4AN+SJt6c6BxB3HrActiZAPBBkCkd5Bsu6fBVqXnLNGGzv9T9Ur6zM5KBbXB8 R8fYOXu3eJfueupajAma3eGmkQyAad690HcZuGQcBioxgmmdZRhlqoFlpOnzr57CeOUe tDAE4eAM9AgcEDtMinKe1XoNYQhr7Q042UnZrrEjH2/qOaPgVlyWjBurzYxm5KyezBdm fkWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=6aYkJNxX4I7F0/iAErGAQ186tMhVlu39SqwyFTxpHqM=; b=tjGsUzOYBw4lOG6HSqB26UpA1UtrxVDQ/sG/OYfvdz6TqjR0+9zdzwspwhCS+jXsBE kf4iCP5kLc3Q0YxcrYmYi795keEmrABWKDZwloaGhMgwLeeAV9JGlhcQ75ZqrWgFaUvQ sf8MqU1dxueCUhGWk2r0/Mrn5iz4yncFZnJolTdbdyRuh4HFm+/Gy1o0qEbSMV+IObU1 /xrdrcaMML6pvBvsQ794aRMLbJRQM3j+6Mz4iYZrERKn5LU9rswTURgChg/+wLNax1I2 ZfL/9MVHdHEy0hKvRizpT5gXaFvO0uLb09mgs6BuP/6xDhiZ0Jw6s/4L3HC5DT2WQhNr AVeQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z11si6736484oic.176.2020.01.13.16.21.02; Mon, 13 Jan 2020 16:21:14 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729394AbgAMXb3 (ORCPT + 99 others); Mon, 13 Jan 2020 18:31:29 -0500 Received: from foss.arm.com ([217.140.110.172]:45708 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729366AbgAMXb1 (ORCPT ); Mon, 13 Jan 2020 18:31:27 -0500 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 04E6F142F; Mon, 13 Jan 2020 15:31:27 -0800 (PST) Received: from ewhatever.cambridge.arm.com (ewhatever.cambridge.arm.com [10.1.197.1]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DF5863F68E; Mon, 13 Jan 2020 15:31:25 -0800 (PST) From: Suzuki K Poulose To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, will@kernel.org, maz@kernel.org, catalin.marinas@arm.com, ard.biesheuvel@linaro.org, mark.rutland@arm.com, Suzuki K Poulose Subject: [PATCH v3 6/7] arm64: signal: nofpsimd: Handle fp/simd context for signal frames Date: Mon, 13 Jan 2020 23:30:22 +0000 Message-Id: <20200113233023.928028-7-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200113233023.928028-1-suzuki.poulose@arm.com> References: <20200113233023.928028-1-suzuki.poulose@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Make sure we try to save/restore the vfp/fpsimd context for signal handling only when the fp/simd support is available. Otherwise, skip the frames. Cc: Will Deacon Cc: Mark Rutland Cc: Catalin Marinas Signed-off-by: Suzuki K Poulose --- Changes since v2: - Remove WARN_ON() from static functions already checked for the presence of fpsmid. --- arch/arm64/kernel/signal.c | 6 ++++-- arch/arm64/kernel/signal32.c | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c index dd2cdc0d5be2..339882db5a91 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -371,6 +371,8 @@ static int parse_user_sigframe(struct user_ctxs *user, goto done; case FPSIMD_MAGIC: + if (!system_supports_fpsimd()) + goto invalid; if (user->fpsimd) goto invalid; @@ -506,7 +508,7 @@ static int restore_sigframe(struct pt_regs *regs, if (err == 0) err = parse_user_sigframe(&user, sf); - if (err == 0) { + if (err == 0 && system_supports_fpsimd()) { if (!user.fpsimd) return -EINVAL; @@ -623,7 +625,7 @@ static int setup_sigframe(struct rt_sigframe_user_layout *user, err |= __copy_to_user(&sf->uc.uc_sigmask, set, sizeof(*set)); - if (err == 0) { + if (err == 0 && system_supports_fpsimd()) { struct fpsimd_context __user *fpsimd_ctx = apply_user_offset(user, user->fpsimd_offset); err |= preserve_fpsimd_context(fpsimd_ctx); diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c index 12a585386c2f..82feca6f7052 100644 --- a/arch/arm64/kernel/signal32.c +++ b/arch/arm64/kernel/signal32.c @@ -223,7 +223,7 @@ static int compat_restore_sigframe(struct pt_regs *regs, err |= !valid_user_regs(®s->user_regs, current); aux = (struct compat_aux_sigframe __user *) sf->uc.uc_regspace; - if (err == 0) + if (err == 0 && system_supports_fpsimd()) err |= compat_restore_vfp_context(&aux->vfp); return err; @@ -419,7 +419,7 @@ static int compat_setup_sigframe(struct compat_sigframe __user *sf, aux = (struct compat_aux_sigframe __user *) sf->uc.uc_regspace; - if (err == 0) + if (err == 0 && system_supports_fpsimd()) err |= compat_preserve_vfp_context(&aux->vfp); __put_user_error(0, &aux->end_magic, err); -- 2.24.1