From patchwork Sat Mar 11 19:46:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyle Huey X-Patchwork-Id: 9619001 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1369F604D9 for ; Sat, 11 Mar 2017 19:47:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0202528734 for ; Sat, 11 Mar 2017 19:47:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EA6DC28737; Sat, 11 Mar 2017 19:47:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 82A0628734 for ; Sat, 11 Mar 2017 19:47:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933207AbdCKTr0 (ORCPT ); Sat, 11 Mar 2017 14:47:26 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:33641 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755506AbdCKTrP (ORCPT ); Sat, 11 Mar 2017 14:47:15 -0500 Received: by mail-pg0-f65.google.com with SMTP id 77so13854157pgc.0 for ; Sat, 11 Mar 2017 11:47:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kylehuey.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BxybApFHzIO6ujoLDowJ+btAr3XwaWQ68Wueak60CbY=; b=H6b98fgLdGcwB2LuhTJE3riV4d32F2OmKPx5SXHowQ/DVXy2EQHE7G766OOOQyJEr2 GyMtgBUuTb+Op3uacd3dL19ctqCq10YUqNk74u/vMkVds+qsVHRi1J3YkQwIrRMfRa51 3fSp+7sD9fmLolAzoUyn7Uhy4sInOxW+QOYa7zFu+i9NB6onEsZB7fp+gTWGIwf9K2fC N3CqA7bbULqMxYftYFgJsflBfDjo7ZhXLZ7UTCvSioOvFyvKL/Hh+9YKKAfXpG7kXWWw bLyYfL3N/qG8aHI8vnLKxdOfyt8vpcccbDpiQjX2Y3AqyarxEPdyyp85kgY/94yFIeLr 02Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=BxybApFHzIO6ujoLDowJ+btAr3XwaWQ68Wueak60CbY=; b=Y/wNw8teHziYWf9oXT5/pjVl57M6Pu9RQGAL1EFVaRx+v+0bg0qtjFQIBMvV9m7NP8 4A1gf88ynjS92l9+ReGFKfTy7eqZXKTXGOVXe8YvAqiXWJee/NpOlsWFHuCD4ql0NptS OboJ/NlFfQMqiHkNmnFeD76Oec/9FqyZfuFH1ISKokMh8NGFMUweGVdRsXzszGv5DBVR FzaMeWhVi/FAlrWKlELQCPOchoIO4RT5q/q37ljkPnfalKxm2DE4xSX7ckrqjA5Pm7DO M99fudX3gMXvYc2h4vbm1eablu0lrN0IcYdFaXX/VoJsAHaGTk8NYYxBriTdPeT0gAXh ezuA== X-Gm-Message-State: AMke39mQD/tX8WseuqUlfQhaujcSc0ai7tgFwMrxClioJHnh+/Tnf4WsI92GWvA37gwovQ== X-Received: by 10.99.241.83 with SMTP id o19mr27510690pgk.81.1489261634150; Sat, 11 Mar 2017 11:47:14 -0800 (PST) Received: from minbar.home.kylehuey.com (c-50-150-100-179.hsd1.ca.comcast.net. [50.150.100.179]) by smtp.gmail.com with ESMTPSA id t67sm25421584pfd.76.2017.03.11.11.47.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 11 Mar 2017 11:47:13 -0800 (PST) From: Kyle Huey X-Google-Original-From: Kyle Huey To: Robert O'Callahan , Thomas Gleixner , Andy Lutomirski , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jeff Dike , Richard Weinberger , Alexander Viro , Shuah Khan , Dave Hansen , Borislav Petkov , Peter Zijlstra , Boris Ostrovsky , Len Brown , Dmitry Safonov , "Rafael J. Wysocki" , David Matlack , Nadav Amit , Andi Kleen Cc: linux-kernel@vger.kernel.org, user-mode-linux-devel@lists.sourceforge.net, user-mode-linux-user@lists.sourceforge.net, linux-kselftest@vger.kernel.org, kvm@vger.kernel.org Subject: [PATCH v15 3/9] x86/arch_prctl: Add do_arch_prctl_common Date: Sat, 11 Mar 2017 11:46:56 -0800 Message-Id: <20170311194702.28754-4-khuey@kylehuey.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170311194702.28754-1-khuey@kylehuey.com> References: <20170311194702.28754-1-khuey@kylehuey.com> Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add do_arch_prctl_common() to handle arch_prctls that are not specific to 64 bit mode. Call it from the syscall entry point, but not any of the other callsites in the kernel, which all want one of the existing 64 bit only arch_prctls. Signed-off-by: Kyle Huey --- arch/x86/include/asm/proto.h | 3 +++ arch/x86/kernel/process.c | 6 ++++++ arch/x86/kernel/process_64.c | 8 +++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/proto.h b/arch/x86/include/asm/proto.h index f8e9194e100c..99836d9a893a 100644 --- a/arch/x86/include/asm/proto.h +++ b/arch/x86/include/asm/proto.h @@ -26,9 +26,12 @@ void entry_SYSCALL_compat(void); void entry_INT80_compat(void); #endif void x86_configure_nx(void); void x86_report_nx(void); extern int reboot_force; +long do_arch_prctl_common(struct task_struct *task, int code, + unsigned long cpuid_enabled); + #endif /* _ASM_X86_PROTO_H */ diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 366db7782fc6..25bf542dfcdd 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c @@ -540,8 +540,14 @@ unsigned long get_wchan(struct task_struct *p) } fp = READ_ONCE_NOCHECK(*(unsigned long *)fp); } while (count++ < 16 && p->state != TASK_RUNNING); out: put_task_stack(p); return ret; } + +long do_arch_prctl_common(struct task_struct *task, int code, + unsigned long cpuid_enabled) +{ + return -EINVAL; +} diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 4c139922c2fb..beec7d70acf2 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -621,15 +621,21 @@ long do_arch_prctl_64(struct task_struct *task, int code, unsigned long arg2) break; } return ret; } SYSCALL_DEFINE2(arch_prctl, int, code, unsigned long, arg2) { - return do_arch_prctl_64(current, code, arg2); + long ret; + + ret = do_arch_prctl_64(current, code, arg2); + if (ret == -EINVAL) + ret = do_arch_prctl_common(current, code, arg2); + + return ret; } unsigned long KSTK_ESP(struct task_struct *task) { return task_pt_regs(task)->sp; }