Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1629553pxb; Thu, 4 Mar 2021 16:56:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJxfuHWK7ztRubeYaiAOnIQcmTyBw2ZLC003ujuuw95bFBmhtaFcUcfPCxHQieXwNrGGc08A X-Received: by 2002:a5e:cb4b:: with SMTP id h11mr6104965iok.108.1614905792241; Thu, 04 Mar 2021 16:56:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614905792; cv=none; d=google.com; s=arc-20160816; b=ZQuYviG8XiwShMF+mcZOzWOZ/IY0DsntaNvR2b1Apxh2V5CxpPTal0KmjU46JPSS3U 2K45BtrIpSWtBGB3jSoVixHfancTq5rERKhsF1khwAmGHwjzIootoBKazuvAN1qBcX7w u6VJ7OjfxLmdZTDJOPn0TzA3EBJxXQ18oRiZgeyjZaTTU9cYbh9utKFUGZDt/uCsrHg0 rQ5/f/Nxfgsa/VuV7m8FRQe33jZKhp+R1gcAz5jomIodcnv835IMpm0jAb1qMEAL0KEE DjyAxCblfiZw3IZE1w04v/6XKOH1ktJiNuaePPEphRwHasA0KrA9Rfrl6L8msRpciN6j MlPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=y+UEGYXMdzMvLTuEvckb0QNKbFeu9GI6UkkctIib7gc=; b=eQAhnqsVtj7T1c59fjhOCe5G26GGAd5IM35RfIJ9Ta4YekTEEI49gf61kq5hUP5/yQ XF5xv8FemSMOaBooLEUNK9rrbapEvClx9D+Mq7XKptI1lFgz0rm8SqnmcyuhC14vwBIx IqI3dbE5HITJjoDWhQJ0UfZoaLsyAHDrJdIQl3CjPYyYZtcQZ335OkGAZwJaXdtjisGR 1UzWCBU7vFc6v38m5aUYbJCdRRitm5/iT2cyboEK2pYhWcTzGV5zB75PiUPAamj795qN h8nNuR92/a/Ss1BaxQctKcwzotzl+4KTOc3zpXw57suh4Y2pFVc3FgFMyLgIH/gOqfQU ThQg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YrqMDqgv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m7si1175308jav.63.2021.03.04.16.56.19; Thu, 04 Mar 2021 16:56:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=YrqMDqgv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236841AbhCDTHE (ORCPT + 99 others); Thu, 4 Mar 2021 14:07:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:38804 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236901AbhCDTGs (ORCPT ); Thu, 4 Mar 2021 14:06:48 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3C97C64F65; Thu, 4 Mar 2021 19:06:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1614884768; bh=rlGf/oT/ypp/ZZ3p8t+E+bSAIAvHSsBTAdh6Zi5Tr8Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YrqMDqgvOlH4U91uwr/pUUsxiocuM/3gBqr5jRxYGXuK1r+NzrLxpF5vOu+LY9cz+ OMRRiELHZAF3v44dNXYaVMuZyFRHDR9U50CilPMoRv1Pd+T4xt7o5787JPt39FX5qX K7NDAg3RNp6+7bsqUOrx+oCOWfRcW7/DpUP0aElw730ajDK0VcJBjauICuvniYukO2 teXyFc1YD4o31zYX+T/DQ5xe2PPfJeMWIVKLccHgoolyLqNBKVkDO40YVBce3CHLuD YLwYuQ1UYUe68aLygj/BlDRlix4/qNaKfoi1BDFk9x0SUQRQB+cWeylXTY9TVeliBT Oye/XHcgM64tA== From: Andy Lutomirski To: x86@kernel.org Cc: LKML , Mark Rutland , Andy Lutomirski , stable@vger.kernel.org Subject: [PATCH v3 01/11] x86/entry: Fix entry/exit mismatch on failed fast 32-bit syscalls Date: Thu, 4 Mar 2021 11:05:54 -0800 Message-Id: <8c82296ddf803b91f8d1e5eac89e5803ba54ab0e.1614884673.git.luto@kernel.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On a 32-bit fast syscall that fails to read its arguments from user memory, the kernel currently does syscall exit work but not syscall entry work. This confuses audit and ptrace. For example: $ ./tools/testing/selftests/x86/syscall_arg_fault_32 ... strace: pid 264258: entering, ptrace_syscall_info.op == 2 ... This is a minimal fix intended for ease of backporting. A more complete cleanup is coming. Cc: stable@vger.kernel.org Fixes: 0b085e68f407 ("x86/entry: Consolidate 32/64 bit syscall entry") Signed-off-by: Andy Lutomirski --- arch/x86/entry/common.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c index 0904f5676e4d..8fdb4cb27efe 100644 --- a/arch/x86/entry/common.c +++ b/arch/x86/entry/common.c @@ -128,7 +128,8 @@ static noinstr bool __do_fast_syscall_32(struct pt_regs *regs) regs->ax = -EFAULT; instrumentation_end(); - syscall_exit_to_user_mode(regs); + local_irq_disable(); + irqentry_exit_to_user_mode(regs); return false; } -- 2.29.2