From patchwork Thu Feb 16 14:22:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Vivier X-Patchwork-Id: 728712 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vPJkV26h1z9s8T for ; Fri, 17 Feb 2017 01:41:22 +1100 (AEDT) Received: from localhost ([::1]:47075 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ceNFH-0003cF-Kk for incoming@patchwork.ozlabs.org; Thu, 16 Feb 2017 09:41:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48716) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ceMxh-0003Ct-Ly for qemu-devel@nongnu.org; Thu, 16 Feb 2017 09:23:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ceMxe-0002Ux-F4 for qemu-devel@nongnu.org; Thu, 16 Feb 2017 09:23:09 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:65114) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ceMxe-0002UV-4i for qemu-devel@nongnu.org; Thu, 16 Feb 2017 09:23:06 -0500 Received: from localhost.localdomain ([78.238.229.36]) by mrelayeu.kundenserver.de (mreue101 [212.227.15.183]) with ESMTPSA (Nemesis) id 0MPXwP-1ciTYg0K7F-004fwP; Thu, 16 Feb 2017 15:22:35 +0100 From: Laurent Vivier To: qemu-devel@nongnu.org Date: Thu, 16 Feb 2017 15:22:19 +0100 Message-Id: <20170216142227.27448-7-laurent@vivier.eu> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170216142227.27448-1-laurent@vivier.eu> References: <20170216142227.27448-1-laurent@vivier.eu> X-Provags-ID: V03:K0:/PnULKSvHTYZRnhrkXA48lM7VKUUvIvsZLAUnre+90rrNlVzg7u KVZZykciEsx7E+6Ka1+4uTLnnbvcE5y+e7JK/nSCfdWmxcrt4dVCLClow84igk/8ZynXoGY U1JxpHv9mLheBuFH5QuSxZfDDSyQhYwnD46HluPT0NmY2XQqY65rB2+w5TtPbJas2EY/wsr ItmRNs89zGsVfybCmVhsQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:yo/fVR0qjWY=:o05tqthh070CoUIHuiVAOO rYiixvUfP+gbJ4qHBjlRs1x2dAt2dworDVFilgdLQotcL1d96KrwV3vC+6IyFxjdeuJfh1VnB BjW+sXYodOHt9CNUTVrq9TcM/8UIWnE2Nsb/E+/EAex+xbrft+JkxSC1JCo1t8eCmFlQMhWZF qhfbKd+D5uhLGzLu0fonRqs20bcIKv48WXIpxo+9pOQDUj0hTsL/svqwA86SauPbEd7gAwhV7 SXYNBTx1vAI21wlfX8ZDtSoz396x1kY2mPHqsCQyAfn9TWFbwNMQCUZZ0l2gDH6IHXVFups7K nwec0wYlVE10gb7/SZGmGK/u7Kyqztl1RXb+8SPgUzj9A2ZEkVmuuW5L7ADJPAY+ltM4OtsGg Fs+Ib+fpg0wcP8MG/yIYXRfKm4f2Fd4e3ALiRFwA+LnG8R3tTGmD9JhLZP7exSkIN+iHL1QSi gxEHaKJknOd22JGvdRb6kVzelxWBT90ceB9pZnHsi7s+LWTTg+lL/dhwTfcMRKwCjiu5Deptz d6LhUF6K3CIZFo0Wy7KX8+vlYgmc677H3wdGohSUCIQXi8NQ9aTJVlxnPL+YLbg0LeLAYiDoE 9TJUTrzG90pNUxd3N+JOrG2xUO5gGkySMd/+M6kWbQgpOPXOQWoDS1SMjNW3maZTaOF79ycsV rfj2EKUWlrqTw3nmKRPBKtUfeK//HOP/TjEtNsapwhUge1x0XKgpt2RySZDMGkFu3kv0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.72.192.75 Subject: [Qemu-devel] [PULL 06/14] linux-user: Fix mq_open X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Lena Djokic , Riku Voipio , Riku Voipio Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: Lena Djokic If fourth argument is NULL it should be passed without using lock_user function which would, in that case, return EFAULT, and system call supports passing NULL as fourth argument. Signed-off-by: Lena Djokic Reviewed-by: Peter Maydell Signed-off-by: Riku Voipio --- linux-user/syscall.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 3e88dd1..c1d6f76 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -11583,17 +11583,22 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1, case TARGET_NR_mq_open: { struct mq_attr posix_mq_attr; + struct mq_attr *pposix_mq_attr; int host_flags; host_flags = target_to_host_bitmask(arg2, fcntl_flags_tbl); - if (copy_from_user_mq_attr(&posix_mq_attr, arg4) != 0) { - goto efault; + pposix_mq_attr = NULL; + if (arg4) { + if (copy_from_user_mq_attr(&posix_mq_attr, arg4) != 0) { + goto efault; + } + pposix_mq_attr = &posix_mq_attr; } p = lock_user_string(arg1 - 1); if (!p) { goto efault; } - ret = get_errno(mq_open(p, host_flags, arg3, &posix_mq_attr)); + ret = get_errno(mq_open(p, host_flags, arg3, pposix_mq_attr)); unlock_user (p, arg1, 0); } break;