Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp3673957pxu; Sun, 11 Oct 2020 19:48:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyOh5usx6UjWasrmAGOB7fjckZ4swiD5kTYaFcM8rZab5TLJj1Pkf5G1OQ6qNU+6AjvFqD1 X-Received: by 2002:a17:906:1806:: with SMTP id v6mr4185401eje.320.1602470931252; Sun, 11 Oct 2020 19:48:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602470931; cv=none; d=google.com; s=arc-20160816; b=fNRcN7gR2rrpWexJJbcqR4/WhV8FOEScBqbyQc/Pq1wu7aTtpZhpNoGDtSxp9U3w7x +5LZjgWLE9nEzJqgxWuYQrIUOWWJGDDmGWRXJyNW4QWlkaHUw0uapTkH6z88s714xcdM +vQahLCFXniRBth9OYYJFpX0tuEgu9tCbYSB9ER5edGHKuXFbv2xFUcD1GxLVfftV6g6 BLIru+RJPvc1ciXQOMkccdXYcQNlAXoAsL8zm1wsb8AVVlKW56LGk7xo6ajSfXEE74DB HiFDX3IKZggEBVrKBkHQgG9IVrMVhtqbWG224z3Kw/1evxJZ4CI9bJO5naG2o+SVEdIH ZyiQ== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=Egc2g1s4c25bC1m2WOZ1u2/TqRkKnNmhG2I4XAl2dTI=; b=0Q+1ppQiVk7GwL2yqB3FZmzTHr49POMB9Rf2MGrsBGxeOkbLSecFAy3otT+7sxuOmA QPByO90rsJ1Yu9V1w16Cc82gUmEjRAC64kurb/eAcjrs+7Nfc0/Y5ZSb8ySbgjxcHgnY U5PeiiRoJjRNULSmD5y8cfpoBeU0GJh3in9Fp5P7j2eZ3qm75ZuKs9diGExiZVI/Uwi2 rEqjbHIsVLcTYSxN2xfVaFLFR9uEMdC/BT7tFIgTjuE126HjkGS47WoRqc5rpixrNkDi sX0ubbKV6qDGdsxOWsSId/6r4snkSJ1oW3w2ql7qdTwLQ4asn+lYhsA5dAE2YZ31NSVF Jhmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@jrtc27.com header.s=gmail.jrtc27.user header.b=Y40pGiZP; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n19si10541073eju.255.2020.10.11.19.48.28; Sun, 11 Oct 2020 19:48:51 -0700 (PDT) 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=@jrtc27.com header.s=gmail.jrtc27.user header.b=Y40pGiZP; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726913AbgJLBso (ORCPT + 99 others); Sun, 11 Oct 2020 21:48:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726430AbgJLBsm (ORCPT ); Sun, 11 Oct 2020 21:48:42 -0400 Received: from mail-wm1-x342.google.com (mail-wm1-x342.google.com [IPv6:2a00:1450:4864:20::342]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 65C0CC0613D0 for ; Sun, 11 Oct 2020 18:48:42 -0700 (PDT) Received: by mail-wm1-x342.google.com with SMTP id z22so12796637wmi.0 for ; Sun, 11 Oct 2020 18:48:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jrtc27.com; s=gmail.jrtc27.user; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Egc2g1s4c25bC1m2WOZ1u2/TqRkKnNmhG2I4XAl2dTI=; b=Y40pGiZPqAof6VouNq0+ourFU4bmZXSYyZtSdX4j/Fid8buNEu4Tdb391+FWFwNQO0 TqjWIzI+NV7Q7eZk+iwy1F7m8toUwObyGlZHedu8x3GZqos1tdNFHnVf9Uv+X0RNvwa7 v2iFruxiVWPOVO/3n5muqbyxEXXB4Q/T87vr+znyHquzxzBceREq/mwFp0Y/x0aGyWrw TQGI5RZ+OaHI1+/eNiwiYni27xaijXPgoRvaFlzToGZ1LtxMQvT2DVLnLWgbzkJ2PxlR zYL5ykSkAr+xMGDH0Pkn+3CIhAfFF7T1fq03nfNFejhM3sBzqhBMbOBGMEZlc0SX3wVn b7sQ== 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:mime-version :content-transfer-encoding; bh=Egc2g1s4c25bC1m2WOZ1u2/TqRkKnNmhG2I4XAl2dTI=; b=ozSDQQsTdO5Oz6sv1Y9UZIELmrhzGzhKfoybz3r8pQ//48szQpseO8LjzaSOzpF05q pDQ6ebJfyAnpa1TZ3p+KYduztAv7GYuBEKK7wZlmdisq6TB1W/Wxm/8U+ouBbhqwvQv6 K9l/kw7BG8zyHQlg1GOPiaF/arOmphpIo/0ppwP0DXPYFMWqQfJ6h8Oh9DQwUtviXBnw bRkpRkPJwz16gh9k5tnDriOr172FjsHO8P6IQJipCMWmlse1fOLIvyBfkoVgmSMkA1pG qS7s3WIXJqKSaXBglLT9Wq9TbdYgeGPbCWLtO9wTKQvNSeQmv9mEfpZBDL0Dg+OhAZRN Adgg== X-Gm-Message-State: AOAM531CZ4dc4stwDO+AGhRWYXGMbND5HWV7+CdAZ+1i+VembPsFN568 QJLlqq814J/1RJJ1OgZWcYD/iA== X-Received: by 2002:a1c:59c3:: with SMTP id n186mr8644345wmb.32.1602467320984; Sun, 11 Oct 2020 18:48:40 -0700 (PDT) Received: from debian (trinity-students-nat.trin.cam.ac.uk. [131.111.193.104]) by smtp.gmail.com with ESMTPSA id k18sm4306829wrx.96.2020.10.11.18.48.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 11 Oct 2020 18:48:40 -0700 (PDT) Received: from jrtc27 by debian with local (Exim 4.94) (envelope-from ) id 1kRmx5-0003jb-UC; Mon, 12 Oct 2020 02:48:39 +0100 From: Jessica Clarke To: linux-x86_64@vger.kernel.org Cc: Jessica Clarke , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , linux-kernel@vger.kernel.org Subject: [PATCH] x86: Fix x32 System V message queue syscalls Date: Mon, 12 Oct 2020 02:48:37 +0100 Message-Id: <20201012014837.14305-1-jrtc27@jrtc27.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org POSIX specifies that the first field of the supplied msgp, namely mtype, is a long, not a __kernel_long_t, and it's a user-defined struct due to the variable-length mtext field so we can't even bend the spec and make it a __kernel_long_t even if we wanted to. Thus we must use the compat syscalls on x32 to avoid buffer overreads and overflows in msgsnd and msgrcv respectively. Due to erroneously including the first 4 bytes of mtext in the mtype this would previously also cause non-zero msgtyp arguments for msgrcv to search for the wrong messages, and if sharing message queues between x32 and non-x32 (i386 or x86_64) processes this would previously cause mtext to "move" and, depending on the direction and ABI combination, lose the first 4 bytes. Signed-off-by: Jessica Clarke --- arch/x86/entry/syscalls/syscall_64.tbl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl index f30d6ae9a..7ee40989e 100644 --- a/arch/x86/entry/syscalls/syscall_64.tbl +++ b/arch/x86/entry/syscalls/syscall_64.tbl @@ -77,8 +77,8 @@ 66 common semctl sys_semctl 67 common shmdt sys_shmdt 68 common msgget sys_msgget -69 common msgsnd sys_msgsnd -70 common msgrcv sys_msgrcv +69 64 msgsnd sys_msgsnd +70 64 msgrcv sys_msgrcv 71 common msgctl sys_msgctl 72 common fcntl sys_fcntl 73 common flock sys_flock @@ -404,3 +404,5 @@ 545 x32 execveat compat_sys_execveat 546 x32 preadv2 compat_sys_preadv64v2 547 x32 pwritev2 compat_sys_pwritev64v2 +548 x32 msgsnd compat_sys_msgsnd +549 x32 msgrcv compat_sys_msgrcv -- 2.28.0