[{"id":1777852,"web_url":"http://patchwork.ozlabs.org/comment/1777852/","msgid":"<23bcc5c9-3706-1200-51c9-a48934254343@gmail.com>","list_archive_url":null,"date":"2017-09-30T02:44:46","subject":"Re: [PATCH v3 6/6] drm/tegra: Use u64_to_user_ptr helper","submitter":{"id":18124,"url":"http://patchwork.ozlabs.org/api/people/18124/","name":"Dmitry Osipenko","email":"digetx@gmail.com"},"content":"On 28.09.2017 15:50, Mikko Perttunen wrote:\n> Use the u64_to_user_ptr helper macro to cast IOCTL argument u64 values\n> to user pointers instead of writing out the cast manually. Also do\n> some other cleanup with user pointers to make them stand out more\n> and look cleaner.\n> \n> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>\n> ---\n\nReviewed-by: Dmitry Osipenko <digetx@gmail.com>\nTested-by: Dmitry Osipenko <digetx@gmail.com>\n\n>  drivers/gpu/drm/tegra/drm.c | 29 +++++++++++++++--------------\n>  1 file changed, 15 insertions(+), 14 deletions(-)\n> \n> diff --git a/drivers/gpu/drm/tegra/drm.c b/drivers/gpu/drm/tegra/drm.c\n> index 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> \n\n--\nTo unsubscribe from this list: send the line \"unsubscribe linux-tegra\" in\nthe body of a message to majordomo@vger.kernel.org\nMore majordomo info at  http://vger.kernel.org/majordomo-info.html","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\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"jdK9ImVf\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3y3t7S45FKz9t2r\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 30 Sep 2017 12:44:52 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752677AbdI3Cov (ORCPT <rfc822;incoming@patchwork.ozlabs.org>);\n\tFri, 29 Sep 2017 22:44:51 -0400","from mail-wm0-f66.google.com ([74.125.82.66]:51037 \"EHLO\n\tmail-wm0-f66.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752578AbdI3Cou (ORCPT\n\t<rfc822;linux-tegra@vger.kernel.org>);\n\tFri, 29 Sep 2017 22:44:50 -0400","by mail-wm0-f66.google.com with SMTP id u138so2263869wmu.5;\n\tFri, 29 Sep 2017 19:44:49 -0700 (PDT)","from [192.168.1.145] (ppp109-252-90-109.pppoe.spdop.ru.\n\t[109.252.90.109]) by smtp.googlemail.com with ESMTPSA id\n\tm189sm1117431wmb.2.2017.09.29.19.44.47\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tFri, 29 Sep 2017 19:44:48 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=Pbq6SBQlwV1FoY7lIV5FZK7YVFIlQqrbH64fkmxVA44=;\n\tb=jdK9ImVf84kFmWPTk0ZKPrQOxpE4iJl4StoGT86E30lmVQzlMIAFP6mxs9az0fA5VS\n\t1TsoJ8r1u7FqjJ6+dG9q1xams41Vy7z9kB0QNCtmViNSQtBsQ35ImOEL7Ty6w8C94zjq\n\t3bBwr/nGuXyVydS+lMg+Fv/iB4Q/eYitx9obGsN0LOXLLljrsuZM2TRTswCVZ2Fe2lwX\n\tM2vbMW4honhYhLyfXZvAgo2a26QbYvNZb9grm7tuSSRURRLciFn29rBNYBFZiqGrrZvK\n\ttBAoXrqXr5xKDYzvj9mM7D77+ySZ/GyHYz1RKn3USGKOsYVAKxLvleTco5zgA4TPxztm\n\tUHBQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=Pbq6SBQlwV1FoY7lIV5FZK7YVFIlQqrbH64fkmxVA44=;\n\tb=d54PMjH0jZzIgm0QPiLJ1dUo59aJUujWT/lfNKAY2stvJiDLudVy0e2opXDYW4FiVt\n\txnLZHZ3B7hdMhC/7DKlTh7NhhTk1GwnsZ1hdm1NW3qC7sAf62qhsqXWayfDcsCirGvri\n\thnHxPf1aCVNrhQVqJRwMa3KAvp5LKG5gYWpgIhF06DPjGXKivcCoCI4a3bxpaARaGQYd\n\tlYHwhOljRfxKe31/IErTAbaLJfgfr9Z/VKQytMAM+NUWomhn56jJvvCcpt2RZScNp/Fl\n\t8ChsbVUbjJIYkyEWaHqCGIsAwxlk7mjCVYf0i0M7NI/gOrl0PLECZFD8aTc0baO/u6Bn\n\tl4XA==","X-Gm-Message-State":"AMCzsaVya3mjwJL9h3WFKuQlCO4+6JV6w8dYZy+PBpKAcBRito9MvDhd\n\tFWI0PUJt5GuzgrjK2s70WOVjcBYP","X-Google-Smtp-Source":"AOwi7QCB/Vsy9asv9TtE/oWnhbJJp54nNWKi3XAhoekI8+p7s4wbNYpn2Ozi4d4sLRDwSwimNIea5w==","X-Received":"by 10.28.8.204 with SMTP id 195mr5894620wmi.115.1506739488839;\n\tFri, 29 Sep 2017 19:44:48 -0700 (PDT)","Subject":"Re: [PATCH v3 6/6] drm/tegra: Use u64_to_user_ptr helper","To":"Mikko Perttunen <mperttunen@nvidia.com>, thierry.reding@gmail.com,\n\tjonathanh@nvidia.com","Cc":"dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org","References":"<20170928125044.32516-1-mperttunen@nvidia.com>\n\t<20170928125044.32516-7-mperttunen@nvidia.com>","From":"Dmitry Osipenko <digetx@gmail.com>","Message-ID":"<23bcc5c9-3706-1200-51c9-a48934254343@gmail.com>","Date":"Sat, 30 Sep 2017 05:44:46 +0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170928125044.32516-7-mperttunen@nvidia.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","Sender":"linux-tegra-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<linux-tegra.vger.kernel.org>","X-Mailing-List":"linux-tegra@vger.kernel.org"}}]