From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754397AbbHMW7M (ORCPT ); Thu, 13 Aug 2015 18:59:12 -0400 Received: from mail-ob0-f177.google.com ([209.85.214.177]:35075 "EHLO mail-ob0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752135AbbHMW7K (ORCPT ); Thu, 13 Aug 2015 18:59:10 -0400 MIME-Version: 1.0 In-Reply-To: References: <55CCB510.3060807@redhat.com> <55CD0DAC.9080809@redhat.com> From: Andy Lutomirski Date: Thu, 13 Aug 2015 15:58:50 -0700 Message-ID: Subject: Re: [Regression v4.2 ?] 32-bit seccomp-BPF returned errno values wrong in VM? To: Linus Torvalds Cc: Denys Vlasenko , Kees Cook , David Drysdale , "linux-kernel@vger.kernel.org" , Will Drewry , Ingo Molnar , Alok Kataria , Borislav Petkov , Alexei Starovoitov , Frederic Weisbecker , "H. Peter Anvin" , Oleg Nesterov , Steven Rostedt , X86 ML Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Aug 13, 2015 at 3:54 PM, Linus Torvalds wrote: > On Thu, Aug 13, 2015 at 3:49 PM, Linus Torvalds > wrote: >> >> Does the attached patch make sense and work? > > Btw, I'm not all that happy with it anyway. > > I still think Denys' patch also potentially changed what audit and > strace see for %rax in the pt_regs to -ENOSYS, which I'm not convinced > is a good change. For better for for worse, the native 64-bit path changed several versions agi, and nothing broke that I'm aware of. The change was: commit 54eea9957f5763dd1a2555d7e4cb53b4dd389cc6 Author: Andy Lutomirski Date: Fri Sep 5 15:13:55 2014 -0700 x86_64, entry: Treat regs->ax the same in fastpath and slowpath syscalls AFAIK, ptrace has always seen ax == -ENOSYS on syscall entry for native 64-bit syscalls. My change just simplified the fast path (which is invisible by ptrace for obvious reasons, unless someone traces fork or something along those lines *without*) and made it less different from the slow path. (IIRC it also simplified some stuff down the road.) Looking at 3.19's ia32entry.S, it has: sysenter_tracesys: #ifdef CONFIG_AUDITSYSCALL testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET) jz sysenter_auditsys #endif SAVE_REST CLEAR_RREGS movq $-ENOSYS,RAX(%rsp)/* ptrace can change this for a bad syscall */ So I think it's always been the intent and practice that ptracers would see ax == -ENOSYS on syscall entry. IOW, whether this is good or bad, I don't think it's really a change. --Andy