From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751454AbcEJJGt (ORCPT ); Tue, 10 May 2016 05:06:49 -0400 Received: from mail-am1on0106.outbound.protection.outlook.com ([157.56.112.106]:61568 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751178AbcEJJGq (ORCPT ); Tue, 10 May 2016 05:06:46 -0400 Authentication-Results: linux-foundation.org; dkim=none (message not signed) header.d=none;linux-foundation.org; dmarc=none action=none header.from=virtuozzo.com; From: Andrey Ryabinin To: Andrew Morton CC: Ingo Molnar , , , , Alexander Potapenko , Dmitry Vyukov , , Andrey Ryabinin Subject: [PATCH] x86-kasan-instrument-user-memory-access-api-fix Date: Tue, 10 May 2016 11:33:29 +0300 Message-ID: <1462869209-21096-1-git-send-email-aryabinin@virtuozzo.com> X-Mailer: git-send-email 2.7.3 In-Reply-To: <20160509062921.GA2522@gmail.com> References: <20160509062921.GA2522@gmail.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR03CA032.eurprd03.prod.outlook.com (10.141.191.160) To DB6PR0801MB1302.eurprd08.prod.outlook.com (10.168.11.20) X-MS-Office365-Filtering-Correlation-Id: 42a4228f-e066-484c-5ccf-08d378adb305 X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;2:lhBsU8mhB595j2n306QRzUnwHlFcpsRcT5RF/E1/LY+RvJRSy9hbp7k35+07s2TG9x8aI0mjpsRgjHJrYY20oQLjdux/2yvnnik8TUZxITYSUd9r6qrmFl0NFgSnZ2/wfYz0uRYTxFW2+CYWzeSFFgzFJpF5sDXbhDT2K4x8bai+9dIRpw1ZR1ZuPCE3sfpd;3:ektGs/CqSGPAqIqijG7ShmlKE+fryRux/Zi7gX4D+whjqVYWtuCkr7I0YQUgf0a5gCz6peEVnaNKcE7sX2N4OWsrc0kwmvGvPkNH2TSKfEW5Xd1l4jfF0veEIpZwr+XR;25:e+xuBEPyLq/T1eRFC3RnrZD5YnmSkMoGiv+ZROxYc0RBk/RvbZEvfYc86U+mKgAn2+4kM3QK3f9kCClHTK8fnUpFbs2gvVXjvVP4JaTgXG9vJdAHG+mQT5p/0aXxUV6nHjype+9xQcKoNUUBF4yuo0ntrRvAUoUwIFG+DmPeyLXs2YIVyDmkZEtqVUi+9rgNnVt+QC1dgI3RpHD8+znmbGujHR4Gqu57njb0DwmoL6j7JDW9am05n4zNHTTOa0QR9wJXUoo3uZMZXH+TOIOvDB5fZBzGK8zHgKgl69XwdCAqCtW2DVFE2rqv7D+jyr9U2kjZox2OhnDUcImYwhzK38wzkPzkDSowKd7uKgpeUjWsFKREJtsR2sGEUglgfnzkdXADXUM7bdz1l/ykfMrisU5QhsVX6wA1RzuAtqFXh0UZ2GKEpyOutbAQJeZYJ55K X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1302; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041072)(6043046);SRVR:DB6PR0801MB1302;BCL:0;PCL:0;RULEID:;SRVR:DB6PR0801MB1302; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;4:A12b7VLiri0IBLBnLWQ15PIZsZKz6c0RGt0ik+vgF6VH2nhU5yuvlntVE4NXCBJpKqivw/8jX+k9r0HczOd1hyMlEgD278+56bmyfwjhsPDfEFEZ4tWCQLb41+DJeY2q7ZtAXEhSGsPUFu+h1bKTXtzeJQ36mHf6olZmWjkXJcVyZVEyjyLvt/h4nYCuofBnI7JQNY5wUkQf2aGF3IfCfvVpnwoy/v1/6eQRbAkYFvE3ACGPNFaDKSMvM8yvO8KGyDfz9ywSMk7zb1pVlrMcqtmkfVj8zzz+LQ3/Rrgc/BbLBJa2Yba6ekWSgY7/LsRwpHNSKgI3G71DhDTS7/tWMOvb6SqzsYGFj/W6Y0E1YXgZv4PNm/n1BHIKUDcODfc7Hce2LfTy6u4Zp5i8AOo/Js+sGuXGqnNlV5+5JXx7oKw= X-Forefront-PRVS: 0938781D02 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(19580395003)(230783001)(19580405001)(4001430100002)(53416004)(76506005)(33646002)(42186005)(110136002)(229853001)(5008740100001)(76176999)(50986999)(2950100001)(77096005)(189998001)(50226002)(86362001)(107886002)(5003940100001)(92566002)(50466002)(81166005)(48376002)(47776003)(586003)(6116002)(66066001)(2906002)(36756003)(4326007);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR0801MB1302;H:localhost.sw.ru;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;23:scBsZNyc6/KH3ognG0mus23H410snVswPM1Qh4Wyv4yLX73FUTpY9NZhShm6Nj7aZsculECm6pGqi7GR59NL+rYU1F9m0HgG8TUhgPl4js0DrJiAMFD0AkTZ+/hDOLEqH7GxvfihDBpzeTDAxcmHpidgtBoqC97DUWjNIugEqyw4qja8ktXb3CJGeLrhX/ivhSwJE0Eo8JzCoK2b9kFW3/N2Mk/jZt7eXiHZswkxR17Pj5taySJZqFSOdIrPiseBEn7Ug9Q1HsVSyGyuKEz04xJFj5u+74FTPt+1fQsqo3qHE4LKEnmI3xKjRkTaxAFP/JpyDM+moOhAwMuVE5H+j11tdTcsdbEyAh6NhjLDO1GGguWFpXVL2hq6CVHMQZk/MKulhzc5CQIv+uJdMRiqP42FPpAIB5XUAAZhu9dyy7HTY1Ux3tHHk9jv9Nqcyq0A66PHYpmJ4xN8f1UzzJr50k+JLE4qM+81moP/HKuMzMuLF4gmvtdYsKgv1syE5T7r+uTC3R/EI2qQFp83Ja3K7Zezu8Yxe/+D/ft6mwKZBz1BHOpK9CG3Vr7+Ezxh03WIz3jRCmNxix0ofAxIGqEJpE+iJ7cAsakN7koF52dDld/RUUtohRoN/mmN7NieGPphrKOhyEV9trHmIbMy+GIF08b1ATPxKSpCHlm0ZfGhgtscWSUUq0vtsUtG49StR1P2E8g+L0GnNEJysE7eJGusDR+WSq1YPnCxJ/uIiPHGy6wncUFGxO2hCV9GuBMvYxvOewj04X6IEcjAHMDAdwEVAxETE/YWuBRsUB2t/LueMvWez5ZJXWIwoHe8TKmLoW7VE3Mz1E5b5xtKkFIQ6nj2C02EbhOs5+X19WgFHh8bxAlB5QP02/sffKpLeG837xAJfIuF4I3cjaPd7LPCeTgAp4TwoKEpA1H2d3gttnLgR5E= X-Microsoft-Exchange-Diagnostics: 1;DB6PR0801MB1302;5:NyRQ349lw+Y1/nli4LonOHuNNxTuA1QwhzHmx7+SbQpe4J/MeeuW/Yr94FQTSkFOFkFs8FM56uTMZ7HzC13iUyje8iUIM6PPGOIyWBpLSl+JFtuCM8DhTY1zrI8q8Lj3/BrVfWHCjlXn2kX74K6jIQ==;24:DAfUySQ+SqkDMNV8SFEti6q4wRafbhl6nDdIAwaYb4BfP4JCOJfvZjKmil4ZstE6f4/Jfk8mEPd+IWiSe0h5aZLWh1wAXnpQoUifSbj5yKM=;7:uLxyZXGSchKAC/EGMg6mHTUOu4Z/MBR04zyIalVgkTOsgJYnAf6V4oX182UQiLEC3jxJJCIUkmGJW19Rkhbl3ZLLvJyi6w/k+3GN/X8xzeBASaNl4XB5b6Jn6tSeGZ3iU8iENQjSvfySK6hjp4jAXQZyIcRjw8Yq6BDtsclO86/OgSRhMUAI4iEBuiLyHw5E;20:98Q5yzlO8eYcnjEoVwCKtoKyVGf+qNb9IR8jw9e0Fhf3P/TUg3x8QMVYDeA1hd/LUJsL6MOMK96zkKZtxMsP7SCNO2b24R7mibbT80QcUrL69JeDXildm8jmB0eu1iYJVjnAGBgvBOcDdJ9S42RegsdL05PKV8jZ2iub4i4i8Kg= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2016 08:33:00.9551 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0801MB1302 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Move kasan check under the condition, otherwise we may fail and not do a user copy. Reported-by: Ingo Molnar Signed-off-by: Andrey Ryabinin --- lib/strncpy_from_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index e3472b0..33f655e 100644 --- a/lib/strncpy_from_user.c +++ b/lib/strncpy_from_user.c @@ -104,13 +104,13 @@ long strncpy_from_user(char *dst, const char __user *src, long count) if (unlikely(count <= 0)) return 0; - kasan_check_write(dst, count); max_addr = user_addr_max(); src_addr = (unsigned long)src; if (likely(src_addr < max_addr)) { unsigned long max = max_addr - src_addr; long retval; + kasan_check_write(dst, count); user_access_begin(); retval = do_strncpy_from_user(dst, src, count, max); user_access_end(); -- 2.7.3