{"id":819572,"url":"http://patchwork.ozlabs.org/api/patches/819572/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-tegra/patch/20170928125044.32516-7-mperttunen@nvidia.com/","project":{"id":21,"url":"http://patchwork.ozlabs.org/api/projects/21/?format=json","name":"Linux Tegra Development","link_name":"linux-tegra","list_id":"linux-tegra.vger.kernel.org","list_email":"linux-tegra@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20170928125044.32516-7-mperttunen@nvidia.com>","list_archive_url":null,"date":"2017-09-28T12:50:44","name":"[v3,6/6] drm/tegra: Use u64_to_user_ptr helper","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"483df0981f61a9d432c9e9cfa3a1ce950de41427","submitter":{"id":26499,"url":"http://patchwork.ozlabs.org/api/people/26499/?format=json","name":"Mikko Perttunen","email":"mperttunen@nvidia.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-tegra/patch/20170928125044.32516-7-mperttunen@nvidia.com/mbox/","series":[{"id":5559,"url":"http://patchwork.ozlabs.org/api/series/5559/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-tegra/list/?series=5559","date":"2017-09-28T12:50:44","name":"Miscellaneous improvements to Host1x and TegraDRM","version":3,"mbox":"http://patchwork.ozlabs.org/series/5559/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/819572/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/819572/checks/","tags":{},"related":[],"headers":{"Return-Path":"<linux-tegra-owner@vger.kernel.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=linux-tegra-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tsecure) header.d=kapsi.fi header.i=@kapsi.fi header.b=\"lP3wx9dN\";\n\tdkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y2vht1RMvz9t3B\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu, 28 Sep 2017 22:51:58 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753135AbdI1Mv5 (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tThu, 28 Sep 2017 08:51:57 -0400","from mail.kapsi.fi ([91.232.154.25]:51720 \"EHLO mail.kapsi.fi\"\n\trhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP\n\tid S1752840AbdI1Mv4 (ORCPT <rfc822;linux-tegra@vger.kernel.org>);\n\tThu, 28 Sep 2017 08:51:56 -0400","from dsl-hkibng22-54f983-249.dhcp.inet.fi ([84.249.131.249]\n\thelo=localhost.localdomain) by mail.kapsi.fi with esmtpsa\n\t(TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2)\n\t(envelope-from <mperttunen@nvidia.com>)\n\tid 1dxYIC-0007ES-74; Thu, 28 Sep 2017 15:51:52 +0300"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=kapsi.fi;\n\ts=20161220; \n\th=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From;\n\tbh=Z6fHG4VLcKPhH46k/asOQQuk13fXBSZ/AyUmtgg/9oY=; \n\tb=lP3wx9dN4CBaz46nU5F1V7uMYz3pZcHVZRApEaRbZ4d3ZIODv2stpP3u0Lp9vMH/AVEMEEeVnUGUBWoTJyLEWPJYmsUbKkAqggmStmKsLbo+yENDtjsIbW6XosmJa+17ZRC3BX6eHInc7GdBJLSXWuHApGrRa8HMEoePaI2SPkTzcK4cH08ZG2fMGZIfQHZ840UL0v+vlEH5AG+mVLjrmrs0Hc0fygF3cKc8DJBXACCE2Igaq7SuOAkFUBZAtG+gFGwpn9Cz4O9txJB8ozYlgj//JTkKZNnTmDG5vY7/I+QoZY42SUrMk1CUgQKtrjgvkpmz/Lurk2c8T+smwxbYZw==;","From":"Mikko Perttunen <mperttunen@nvidia.com>","To":"thierry.reding@gmail.com, jonathanh@nvidia.com","Cc":"digetx@gmail.com, dri-devel@lists.freedesktop.org,\n\tlinux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org,\n\tMikko Perttunen <mperttunen@nvidia.com>","Subject":"[PATCH v3 6/6] drm/tegra: Use u64_to_user_ptr helper","Date":"Thu, 28 Sep 2017 15:50:44 +0300","Message-Id":"<20170928125044.32516-7-mperttunen@nvidia.com>","X-Mailer":"git-send-email 2.14.1","In-Reply-To":"<20170928125044.32516-1-mperttunen@nvidia.com>","References":"<20170928125044.32516-1-mperttunen@nvidia.com>","X-SA-Exim-Connect-IP":"84.249.131.249","X-SA-Exim-Mail-From":"mperttunen@nvidia.com","X-SA-Exim-Scanned":"No (on mail.kapsi.fi); SAEximRunCond expanded to false","Sender":"linux-tegra-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-tegra.vger.kernel.org>","X-Mailing-List":"linux-tegra@vger.kernel.org"},"content":"Use the u64_to_user_ptr helper macro to cast IOCTL argument u64 values\nto user pointers instead of writing out the cast manually. Also do\nsome other cleanup with user pointers to make them stand out more\nand look cleaner.\n\nSigned-off-by: Mikko Perttunen <mperttunen@nvidia.com>\n---\n drivers/gpu/drm/tegra/drm.c | 29 +++++++++++++++--------------\n 1 file changed, 15 insertions(+), 14 deletions(-)","diff":"diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c\nindex 130d193192ee..943bdf88c4a2 100644\n--- a/drivers/gpu/drm/tegra/drm.c\n+++ b/drivers/gpu/drm/tegra/drm.c\n@@ -386,12 +386,10 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \tunsigned int num_cmdbufs = args->num_cmdbufs;\n \tunsigned int num_relocs = args->num_relocs;\n \tunsigned int num_waitchks = args->num_waitchks;\n-\tstruct drm_tegra_cmdbuf __user *cmdbufs =\n-\t\t(void __user *)(uintptr_t)args->cmdbufs;\n-\tstruct drm_tegra_reloc __user *relocs =\n-\t\t(void __user *)(uintptr_t)args->relocs;\n-\tstruct drm_tegra_waitchk __user *waitchks =\n-\t\t(void __user *)(uintptr_t)args->waitchks;\n+\tstruct drm_tegra_cmdbuf __user *user_cmdbufs;\n+\tstruct drm_tegra_reloc __user *user_relocs;\n+\tstruct drm_tegra_waitchk __user *user_waitchks;\n+\tstruct drm_tegra_syncpt __user *user_syncpt;\n \tstruct drm_tegra_syncpt syncpt;\n \tstruct host1x *host1x = dev_get_drvdata(drm->dev->parent);\n \tstruct drm_gem_object **refs;\n@@ -400,6 +398,11 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \tunsigned int num_refs;\n \tint err;\n \n+\tuser_cmdbufs = u64_to_user_ptr(args->cmdbufs);\n+\tuser_relocs = u64_to_user_ptr(args->relocs);\n+\tuser_waitchks = u64_to_user_ptr(args->waitchks);\n+\tuser_syncpt = u64_to_user_ptr(args->syncpts);\n+\n \t/* We don't yet support other than one syncpt_incr struct per submit */\n \tif (args->num_syncpts != 1)\n \t\treturn -EINVAL;\n@@ -440,7 +443,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \t\tstruct tegra_bo *obj;\n \t\tu64 offset;\n \n-\t\tif (copy_from_user(&cmdbuf, cmdbufs, sizeof(cmdbuf))) {\n+\t\tif (copy_from_user(&cmdbuf, user_cmdbufs, sizeof(cmdbuf))) {\n \t\t\terr = -EFAULT;\n \t\t\tgoto fail;\n \t\t}\n@@ -476,7 +479,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \n \t\thost1x_job_add_gather(job, bo, cmdbuf.words, cmdbuf.offset);\n \t\tnum_cmdbufs--;\n-\t\tcmdbufs++;\n+\t\tuser_cmdbufs++;\n \t}\n \n \t/* copy and resolve relocations from submit */\n@@ -485,7 +488,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \t\tstruct tegra_bo *obj;\n \n \t\terr = host1x_reloc_copy_from_user(&job->relocarray[num_relocs],\n-\t\t\t\t\t\t  &relocs[num_relocs], drm,\n+\t\t\t\t\t\t  &user_relocs[num_relocs], drm,\n \t\t\t\t\t\t  file);\n \t\tif (err < 0)\n \t\t\tgoto fail;\n@@ -519,9 +522,8 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \t\tstruct host1x_waitchk *wait = &job->waitchk[num_waitchks];\n \t\tstruct tegra_bo *obj;\n \n-\t\terr = host1x_waitchk_copy_from_user(wait,\n-\t\t\t\t\t\t    &waitchks[num_waitchks],\n-\t\t\t\t\t\t    file);\n+\t\terr = host1x_waitchk_copy_from_user(\n+\t\t\twait, &user_waitchks[num_waitchks], file);\n \t\tif (err < 0)\n \t\t\tgoto fail;\n \n@@ -539,8 +541,7 @@ int tegra_drm_submit(struct tegra_drm_context *context,\n \t\t}\n \t}\n \n-\tif (copy_from_user(&syncpt, (void __user *)(uintptr_t)args->syncpts,\n-\t\t\t   sizeof(syncpt))) {\n+\tif (copy_from_user(&syncpt, user_syncpt, sizeof(syncpt))) {\n \t\terr = -EFAULT;\n \t\tgoto fail;\n \t}\n","prefixes":["v3","6/6"]}