Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3704500imu; Mon, 7 Jan 2019 08:02:46 -0800 (PST) X-Google-Smtp-Source: AFSGD/VXrcZam4j+leKhC68mdkTwM0jJczBl4RhQbbFQeUKtb95HiqnnfynHoQAv7AwL2TGYcgid X-Received: by 2002:a62:8dd9:: with SMTP id p86mr62834588pfk.143.1546876966500; Mon, 07 Jan 2019 08:02:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546876966; cv=none; d=google.com; s=arc-20160816; b=MWMdff9zh6XyaA0GKSgaJdux7l3iZJt2QAncl5GiAa81k81PuCImB/BEu5ih8xjuUE JzA4Fit7KZ6BHWrbHHZxoLF+lR7Ez8Fz9JiWCBYz0P8Ut8+LpppRzxkumTzzz6nP5c0Z bpNTFf5u/N7cpeBs3FRlqVx2x2jTCIasU98r6f0ggQbAuayefpaOKwo0AdAUc1cD3VDU 2ToldDE+G2MiEkOor2Rbg067WlEMPUlecgMwvE5UMw0O0uFCX9arxFx3xuFwlGlDIMfR +Vg23clZSiv95obPMbic/35BaqoP5+RFu0BB5/SNSI750F6PPk7saMUbsD7s6BeIy94f 6Zsg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=kCK5GrZErEwkvPlsWhoFbflaQw93xQMGUJtUc4p6dGY=; b=vb5F7WXllm99G9nHhTDWLzx+Nh23hjY+cuoppvIbAmAQQwoPtCsUEoMbe54qybUDYS Yr4B5icJYO6f5s3F+iCZiOkcw9dWICr5aEJtpv+EnKkHIxeeMAhmSkDNQfeaO9jQNiwV 2ggbP6eRBO7ar1TJokRSISuTPS45MJ1/Ls79YclXhRLIibGExumt7+k++1kqvKwBz8NO jZnQmi2L4OwVHUBeKOvm4LhYet/7DsK8L984+8ghQsW831AAA6M+jm2ScOhqdxvg3qoX lTV+p5irZeG2YFK4lYeIrzQWrTBuIlXxUW1g/lPSbbHoHIybNwaNarzfTlsNAJ9FfJ4i Q35Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=J1kZRPrq; 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 c136si63780405pfc.141.2019.01.07.08.02.29; Mon, 07 Jan 2019 08:02:46 -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; dkim=pass header.i=@kernel.org header.s=default header.b=J1kZRPrq; 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 S1728575AbfAGMom (ORCPT + 99 others); Mon, 7 Jan 2019 07:44:42 -0500 Received: from mail.kernel.org ([198.145.29.99]:33370 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727832AbfAGMok (ORCPT ); Mon, 7 Jan 2019 07:44:40 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 40BC92183E; Mon, 7 Jan 2019 12:44:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1546865079; bh=h9LTy0tGgWEZWgtB4DOuI6eYEdJ1ZNH6Bb66WJUVFEE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=J1kZRPrq1MURS60eea99tiZEcenYko4wzzM0zDPnHPyAm+uO40DAu2JrULxSGFj6N ewIu6DCt1v2rvWYUsl8tDA40uvQuwP/R/6Nw/qP8igqC3tuvnllJW154yNAwkgrN5W v8Ce/nwz9WlQ7Helq4sZVSv44MhHALvLiR4zYOpQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dave Martin , Pi-Hsun Shih , Will Deacon Subject: [PATCH 4.20 141/145] arm64: compat: Avoid sending SIGILL for unallocated syscall numbers Date: Mon, 7 Jan 2019 13:32:58 +0100 Message-Id: <20190107104455.596144836@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190107104437.308206189@linuxfoundation.org> References: <20190107104437.308206189@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ From: Will Deacon commit 169113ece0f29ebe884a6cfcf57c1ace04d8a36a upstream. The ARM Linux kernel handles the EABI syscall numbers as follows: 0 - NR_SYSCALLS-1 : Invoke syscall via syscall table NR_SYSCALLS - 0xeffff : -ENOSYS (to be allocated in future) 0xf0000 - 0xf07ff : Private syscall or -ENOSYS if not allocated > 0xf07ff : SIGILL Our compat code gets this wrong and ends up sending SIGILL in response to all syscalls greater than NR_SYSCALLS which have a value greater than 0x7ff in the bottom 16 bits. Fix this by defining the end of the ARM private syscall region and checking the syscall number against that directly. Update the comment while we're at it. Cc: Cc: Dave Martin Reported-by: Pi-Hsun Shih Signed-off-by: Will Deacon Signed-off-by: Greg Kroah-Hartman --- arch/arm64/include/asm/unistd.h | 5 +++-- arch/arm64/kernel/sys_compat.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) --- a/arch/arm64/include/asm/unistd.h +++ b/arch/arm64/include/asm/unistd.h @@ -40,8 +40,9 @@ * The following SVCs are ARM private. */ #define __ARM_NR_COMPAT_BASE 0x0f0000 -#define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE+2) -#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE+5) +#define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE + 2) +#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5) +#define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800) #define __NR_compat_syscalls 399 #endif --- a/arch/arm64/kernel/sys_compat.c +++ b/arch/arm64/kernel/sys_compat.c @@ -102,12 +102,12 @@ long compat_arm_syscall(struct pt_regs * default: /* - * Calls 9f00xx..9f07ff are defined to return -ENOSYS + * Calls 0xf0xxx..0xf07ff are defined to return -ENOSYS * if not implemented, rather than raising SIGILL. This * way the calling program can gracefully determine whether * a feature is supported. */ - if ((no & 0xffff) <= 0x7ff) + if (no < __ARM_NR_COMPAT_END) return -ENOSYS; break; }