From patchwork Sun Dec 11 12:56:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 9469757 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 8FBD060476 for ; Sun, 11 Dec 2016 12:59:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 87F9B2847B for ; Sun, 11 Dec 2016 12:59:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7979F28492; Sun, 11 Dec 2016 12:59:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id DC8B32847B for ; Sun, 11 Dec 2016 12:59:46 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.85_2 #1 (Red Hat Linux)) id 1cG3ho-0006F5-0z; Sun, 11 Dec 2016 12:58:16 +0000 Received: from mail-bl2nam02on0064.outbound.protection.outlook.com ([104.47.38.64] helo=NAM02-BL2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.85_2 #1 (Red Hat Linux)) id 1cG3hk-00068k-Kc for linux-arm-kernel@lists.infradead.org; Sun, 11 Dec 2016 12:58:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-caviumnetworks-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=XJgvFtPbTqksIH2UyySadaKe2F6QT7aSfFaQRDUd3Uo=; b=z+bi6+lXBeIkSLZY8GX2ea19FZDAHca2Cs9i1TM7e7RARZjH7FrxqhRW09doSHXtBaNKafF1gHq0lVkNXlKvTmU6c/ax9zT8VAsd7hvSQ0cTbDWazWYABiuP3/7lzCCb5Hmwb27wu72x6h8b8H1tMzqwJGD82bOD7gjaVuyoCSE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; Received: from localhost (111.125.246.42) by SN1PR07MB2256.namprd07.prod.outlook.com (10.164.47.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Sun, 11 Dec 2016 12:57:46 +0000 From: Yury Norov To: Subject: [PATCH 1/3] mm: move argument checkers of mmap_pgoff() to separated routine Date: Sun, 11 Dec 2016 18:26:40 +0530 Message-ID: <1481461003-14361-2-git-send-email-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1481461003-14361-1-git-send-email-ynorov@caviumnetworks.com> References: <1481461003-14361-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.125.246.42] X-ClientProxiedBy: VI1PR0901CA0064.eurprd09.prod.outlook.com (10.167.203.160) To SN1PR07MB2256.namprd07.prod.outlook.com (10.164.47.150) X-MS-Office365-Filtering-Correlation-Id: 74622e91-5cec-4684-cf05-08d421c54ef7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN1PR07MB2256; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2256; 3:Tl1FQJFPAjmkzDqy5802Wn3QWmhVMULIDyvHCwFY/qQPlrbIfr2QmasorSJdn1j+wrQxkVBlPBzG9YntES0ew23VR6xIYv3hYaikq76+4/Kbab/1iqo4SK3ydoBdAZ7Sepi7eYkuJTV/T2Pd6bj9FKdlVSFQbMu7AQ92ccoz8wNAzZtMNkwld2s8gFxZexAs6V00ixG0zX62HXTVSjdokPOAUzJ6RFKUP8gmUr+Aaarfg2fSJzkEXIeD4Aj131fKORgB2JbRl0sAUwHto4pqPw==; 25:JQ4N7LstHOaxArBwKv4yaJMuwucj/t3Bhgl7GmuTCUd688IgUfwG3qfutGqm5MQhixVIZ7N1rmw7uUJTTJNZkvKOSW4oWkRFkAv6HPLHRJze0jQzMRiTdeSUMHspurrryZ/RKPErpQAmsuMdFukT/pzSMoClnyS1bbaWf/HV2Qqq37B0vqoNiW7GC/2X9eYigIzDRtvUgqexADZD/sR3wXjXZFeiRaU7PCHylHvmNL6t+Lh8BN4syMohWEOeg8RcvSg+beoKATDGEfCq+6MS4cw04R/vW5B3eoQeNsiUZBB6APW26abLrFXieAMK8CEBS8VjgbJtTHq/jAwhDdChJ7SuBezettAeCTRgCHYV6MmCkd/cyJL5olOSEYdMRQPrBWbkH5UtcZykRgc0WkA9cWfKxgfy586LZoAayXsvohlvHHqmCNjw1UcPevSlcGEa0pxKJYWumv+gudrB4o4Ntw== X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2256; 31:GMAqUxHv2DAzIDt1B2ay2QeUOmje4q1H5WUX9/Vb8xDbS4UJo3+ywgF4ogQbaFwnTWdB3ug+5yz+qr9D+dmFyDNBIdQ+34gEazby1EE990FE3lWYvLMzTNvljggXG7Uivux5ShuczhF1ciPde8k4l5q4GLMrjzS7bYyREa23LPZd2FxeN1hfWh3nXWzx079YOcuxZm0r6Bop7K3sEFmAPHo/BUY9sFPTmKQzbnQ9wcgztpjmuPTOVq1g4JFtJgAe; 20:af7TAPYoVYN1sgXB1AajYJK4nhlqweMK3yHJClImLmT4XcRi/peuuN5sACDO/JbFBuj5Hw2AOATQlOIes4kU9F9hX7nmMjWn2MtTiIVNtN2IRpnUbowFfii5dDjwLV47OpNoikD4HlWdb0nwnxO23EUc8V+59t2V20ZWRbjYs/opsIe7Mn3IbE74XqqoRgSkzeO4it9fIC1skyY9MDYat/AydnJ0ms7aKY+qwLOOnOILPuQZsPe0Ojg0lbDqsDaw8xxoh8w3SPjgGdw28Et1KfWag3jBYfWVP3nujwFZT+O+8LvoYawj+24omaHD/Ih2TtKKQlmdczWFZOOHJeNk9BWqMe5YQgaUaJnApOEpjrs7OfUn9aJoDpr2ZoJEo3BzTdN9adTI54E/LumfIhEA/Jtzda6LF+2MsaiV1rzS93ZF++25tpXD2NxKm/MGyLYIJUS+V16AWGXFpwofHXoFkd2gPuHcA2Ng2ibqL3Snn9zBQkITgySmZxxAPN0sTrXo6h82TpMGaIfByhU7qVytfFoqwh4grbZFrSk5+iDvrmnf+528pNqRd1EZSI1SVH9bf1G6VZ9bv5Zd+9/IWQjwyBHNdYYPQG7hctKzkSmtOjE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123555025)(6072148); SRVR:SN1PR07MB2256; BCL:0; PCL:0; RULEID:; SRVR:SN1PR07MB2256; X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2256; 4:rabgJFtBJMf9KYMkm2wUAKzOKt+AVW61fNWiddElfCXTHtJGnHm9s5hadeBJUd2H4SMPhulMi8WwTo36NwSr43eAkMx4T/05kK3BRkp1kJLTmfY8xW0edoTQZs9KGpCjOmEX/V8BxNFn8lhAISEzmQvjuZlCGiHxnf5M3VXbUimuvIxfUa65ayjbt5gVhjfkW+FlaBHrlGVP7wzvhoz9yrxxdHLHiD2RJDzk+hDWifhrZvetkQUy7X0xySg0HBRUhnetOko/8psf/C4iZlLAtHKvzuFIEbni9wF7dCT/P07ymFHfE0DZGSXdHI/DWwLKnn26IPXwZVhFLPHf2pWZW4iRCLO03ASrOLva8foMVDKHwVTXR6ljseMtcY928CfNlrSUg2QIC5YlyO868GXjCpt997iHOUY4XcFgERYjdR8lRWnZNWr0qUB/gznZdBYZSyOWpcpVTIIJPi8Kki+61iJRzQchv1BrUUKy7VVSgG1Ukxi+ct01LYepcIO2IYR62jLPU93mTbZUPjNkED4Cw+Yipf5jXtRS5BwKMMahirVjHOcRI+N0jMF5+9l+hJQQGefVS0TXug+IIA119KtmEw== X-Forefront-PRVS: 0153A8321A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(39450400003)(39410400002)(39840400002)(189002)(199003)(2906002)(42186005)(109986004)(8676002)(4326007)(105586002)(106356001)(81156014)(7736002)(81166006)(48376002)(50226002)(97736004)(76506005)(305945005)(92566002)(50986999)(5660300001)(6496003)(6486002)(47776003)(101416001)(189998001)(39060400001)(33646002)(50466002)(5003940100001)(1671002)(7416002)(36756003)(6116002)(66066001)(76176999)(3846002)(38730400001)(6666003)(68736007)(5009440100003)(110136003)(2950100002)(266003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR07MB2256; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR07MB2256; 23:k/joBhIDz1GXkJglGQVSE2la0d0YGaiVk8iTXZtMV?= =?us-ascii?Q?QWaQQIU9xJEcB0MBocPufyvqNzBGjfTXL3ag4HP+dIG+lmUZt7wzZrOhX6Ba?= =?us-ascii?Q?pFMbgDG8mQmHC3+rE/ugWGjjCoiUaPBxUkpdIHMDf5Svil6DKGmTkDL4Szfd?= =?us-ascii?Q?mQ5ThcOKE5DpxCrdFspnep+mdYEBWuzgkd2HniI89JSj9nWumUGCPeX0eZVV?= =?us-ascii?Q?v7BAZaJpMtLr/une9kDclXQOM4Yrg7KbuREf5jiCOEzNUDdffgR51SY+r6BU?= =?us-ascii?Q?xnH5mv6yJaX1zLJzEPwlggLIOTXbBjxM29rk78HuW4Cp0KUl1zaKywh3oAQD?= =?us-ascii?Q?ckgrZg9tf2W2driUVtp3QnPt8ALqSqO5Xsln1NqfqhG3F4S2TRLw5RpVKoNe?= =?us-ascii?Q?zTQOqIPQuHobdJfWZP3OfJzgEJ7mmy9sFlQvLS7XcHjuxvWehTwQG1oaemsQ?= =?us-ascii?Q?TXBEdxbjE/DrxtDLa/6ulfTVdlsbxM3L1k3drrIl0mjzCd8ZWAlRDILxKb5Z?= =?us-ascii?Q?Z5orMZdWnkB3vGROUb48ryVcrFF0mtOkcIVDTxtxRHGQKZRZBg2LDpulmjue?= =?us-ascii?Q?fkd/s9gBltq1QyLJ4mLKFcLOxzKafjKwhDhX/yXZzKX2QL3syoiY6H50Pcls?= =?us-ascii?Q?xP+PLV3NpKLSUyfrDbw0Sj9enLBDXzR0H0wiJxAG1hLEFptuWas+w+nUlfmI?= =?us-ascii?Q?nZPc5VwtPnyvEhbGoxrnfw5lF97YWJiNKoUZDQ5BlgnDSg7a43T0h+SVLlaE?= =?us-ascii?Q?YtfYVRn8R1Mx2sxa4z4a4qKdLa8L5EIYNds6J8MuJSddgDlrIIkLqGEDzVyJ?= =?us-ascii?Q?UmHOb6B93hfPI2+v2jjDYL3jUhSqfF9ONAixtU+xo6B+TikkaRh4Zhh1MahS?= =?us-ascii?Q?cV1ofe2u3X0MQePmvQHp0kcURM6D8eNgwYeJhHAmrSDYjGJJc3wGAVKxwfHs?= =?us-ascii?Q?3VWqedFxfzwwFB8fcpA9KxaCJGR4m1akLKuQE2fNFDYv3UJhDC43669RqVRz?= =?us-ascii?Q?Qmu+WQ8wIUvTiugjg6LhGFQtT1pBrmU68POE18lqz4OP95VM9TrJABW3skn5?= =?us-ascii?Q?4zNepxG0wb4nLwUXeJiiNj9W+trYh0xaX6kfseiq9qeDAMNVg5mchcysspiI?= =?us-ascii?Q?/BdPzBWcrUYzAX7du9t5zQ5AL04f0XM1sqBFoyBeptitHyLn/2qbpEGKNJPD?= =?us-ascii?Q?sbDZNddOM+mvL5e45np/IDah37D3Hc6VMW+i4lQmDLo/pGw3/uxbQFwtA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2256; 6:Z515+1vymg1uc1GdLRusjw/y/U8+wF8o+AsTXQSuLxD92p0HWPimwYr26xK5sPvxLftwEHVrxkaT8UCVNLVtFK8TLesgJtOFhTKpTfkySoRiigA0kNfvgN/21T/S29xKphi/Q5odVlm7OD0JGbuK+Os3WrmZ0tY0sK6WdiBHBwCX35KW9D09qoLIqEMhTiSIZVoCK1D1NSJifSi8TbNkNTBpZoKa+cOs85UBwDGkwugAud9s8b1NaNrGlIT15eEYl8XvHR/+pyjZaGmPBG/oxGVT9IZQ+IHnIyK9300om5IRbPw6UN38WpHUhQwSM1P10T4Wn6B+E4o93Dwd1lmrJiWWZGOYcNue741Q0it85ckzMnennMb4I4jaCUBv1a3wHbHjfsjegaEUd4BReCD8NzSFj21k9tc25e7lhkrzcuc=; 5:5jQBvvixGPs/Ft3Kwn8C+7aYXMJfFef7lm6xMqfUZ7zpA6xewEJEElNg187soN1bD+yc/BZMM0vOfD/UYpEyIJyaKf5faVOJ//6vT/vxnabRxxJQaUi8XLzvX6Q9gGIL+bh7ccPCutNEI2mDNhbzJ9umxWfmzIimGFDtV8m8/cw=; 24:Nvl4kDCZEnaMhmHcQM7Iiek7dnDsj1/hY8nfTJk1XhpfGRcMRmXQ2nQcFcsG++fXqbL8JFh4SpPUx6tiYqLDg4+9lNtrfASiPKJ/wEFRMKA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR07MB2256; 7:FNwX7XUTlzvorqkIVosBjA0iBw/bTfeHz22dK3aphKlhRqP+MX89LD9APSveAOri00SYcVpgW22Z/nqVOdczWZ60L9A0uCAznU5/T/nUrNf9neXCLAgRFnnJek83dedh0ijKVWAKcXfRDgAVFv0bIbOV06jk1KHxP/eQMozXX3wp2kihUnC7Xjb/WB9szM2ktLa1E2yx5Ce+yw35MAuiG00Gv+5/dcXadvo8XRZbtgSFCj1lH6rzAfagYxhsSTK4AraIlgTlnNdD4OfV/jXzrzNdgimaaruS376SxdhgOEn1UZgkAGYGQApeLHxQVleXYXldbalz/IR6yrgAqW9DTN0QNfyNsrSrHawzHZEKx+mMjhqmReGm28RuiERA0dPZ/uCSAxphLrpyvUU4Go0OMdm4ECkv20q86KdUvOG3MNcNBr0mzGSMzx/cWustI5vScuL2f+MPvlgUuSEbikivuQ== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2016 12:57:46.1281 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR07MB2256 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20161211_045812_893266_C03C124F X-CRM114-Status: UNSURE ( 9.61 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: szabolcs.nagy@arm.com, Catalin Marinas , heiko.carstens@de.ibm.com, cmetcalf@ezchip.com, Yury Norov , "Dr. Philipp Tomsich" , "Joseph S. Myers" , linux-arch@vger.kernel.org, zhouchengming1@huawei.com, "Kapoor, Prasun" , Alexander Graf , geert@linux-m68k.org, kilobyte@angband.pl, manuel.montezelo@gmail.com, Arnd Bergmann , Andrew Pinski , linyongting@huawei.com, Alexey Klimov , broonie@kernel.org, "Zhangjian \(Bamvor\)" , linux-arm-kernel , Maxim Kuvyrkov , libc-alpha@sourceware.org, Nathan Lynch , LKML , Martin Schwidefsky , davem@davemloft.net, christoph.muellner@theobroma-systems.com Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Yury Norov --- mm/mmap.c | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/mm/mmap.c b/mm/mmap.c index 1af87c1..fc1c943 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -1455,12 +1455,12 @@ unsigned long do_mmap(struct file *file, unsigned long addr, return addr; } -SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, - unsigned long, prot, unsigned long, flags, - unsigned long, fd, unsigned long, pgoff) +static int mmap_pgoff_prepare(struct file **f, unsigned long *l, + unsigned long *fl, unsigned long fd) { - struct file *file = NULL; - unsigned long retval; + struct file *file = *f; + unsigned long flags = *fl; + unsigned long len = *l; if (!(flags & MAP_ANONYMOUS)) { audit_mmap_fd(fd, flags); @@ -1469,9 +1469,10 @@ SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, return -EBADF; if (is_file_hugepages(file)) len = ALIGN(len, huge_page_size(hstate_file(file))); - retval = -EINVAL; - if (unlikely(flags & MAP_HUGETLB && !is_file_hugepages(file))) - goto out_fput; + if (unlikely(flags & MAP_HUGETLB && !is_file_hugepages(file))) { + fput(file); + return -EINVAL; + } } else if (flags & MAP_HUGETLB) { struct user_struct *user = NULL; struct hstate *hs; @@ -1497,8 +1498,23 @@ SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE); + *f = file; + *l = len; + *fl = flags; + return 0; +} + +SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, + unsigned long, prot, unsigned long, flags, + unsigned long, fd, unsigned long, pgoff) +{ + struct file *file = NULL; + unsigned long retval; + int err = mmap_pgoff_prepare(&file, &len, &flags, fd); + if (err) + return err; + retval = vm_mmap_pgoff(file, addr, len, prot, flags, pgoff); -out_fput: if (file) fput(file); return retval;