From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753730AbdKXRSn (ORCPT ); Fri, 24 Nov 2017 12:18:43 -0500 Received: from mail-ve1eur01on0130.outbound.protection.outlook.com ([104.47.1.130]:57713 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751758AbdKXRSl (ORCPT ); Fri, 24 Nov 2017 12:18:41 -0500 From: Andrey Ryabinin To: Andy Lutomirski , X86 ML Cc: Alexander Potapenko , Dmitry Vyukov , kasan-dev@googlegroups.com, Andrey Ryabinin , Borislav Petkov , linux-kernel@vger.kernel.org, Brian Gerst , Dave Hansen , Linus Torvalds , Josh Poimboeuf Subject: [PATCH v4] x86/mm/kasan: Teach KASAN about the cpu_entry_area Date: Fri, 24 Nov 2017 20:21:53 +0300 Message-Id: <20171124172153.23561-1-aryabinin@virtuozzo.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR1001CA0018.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:3:f7::28) To DB6PR08MB2822.eurprd08.prod.outlook.com (2603:10a6:6:1d::25) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603258);SRVR:DB6PR08MB2822; X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2822;3:2CYQnABx5hAkWjCT5nY8Ey0zUorxGnHMfzM7hsn0lvMqcC406++uuYj8lSsyp25v3WIKVBwx3cIIbAe+nAvlsFrD9wSfPyc9xmAUAHKy8Huzu5z4dr8NJ+X175cUTi3PpcQ4P3ekAxHIAt63aHmMyymE7SH8DU0/owRODqUNFzDM4FziUty8tlQW4xVak9YFqB92lzrMeOdTE/UlOmVxcomeWuLX78kLitO4YWvTVN7iKJCR94GzZZNBVoy2SCgJ;25:ilzLAH2YL/dIeI0uAgwyF+yEIli1mwXeE7unSyXH/3MXVCqe7ROK6fg07CR4LD/GGyGTWZ6wbn565nTWeqNRW9Rm/oGrPOABZXi02eX3uZmj+Wp2+nXxlo3GDsNHp5zQVhy9+K/upKRBSHEBWFOKHFw7rWublBojSuOezG5SUHpnvy1REX7/eve//Cn721CV70B60WAtF2MuWrsd7/QrUqNY0N8/8RZvnHxauxfXDvpWtKcqO/iwlIF21JzniUeVIsOCvFcbwSxcudvWUrHqXvPtnx84BLlYFHkq5jT1msHPAVlGEYCWW0bkVVpgd2Y53018SXRynOpOO1Wtz4dU+g==;31:keQDbOaA0gHFJRlB94LcgA7dbi7DWDdVZHoo+LhgKpfG4/guf7iSA1AWneCpKWmQ/Dc7Hbw3n9fToimdtSFI9ZGbZAqz8aqnXVB8JFQ1nl7VSvP46X2HZtwFYrP17FhEOeY7uAbqTPRBqLKyqsdjfFy3urqlyHZdA/e30cobVm7zlhPYGUVfEwIh+lIRtCiOBKSkeBhRQT0bX64XI0+h0JfleFg2p3iyVkJs+jDbYbc= X-MS-TrafficTypeDiagnostic: DB6PR08MB2822: X-MS-Office365-Filtering-Correlation-Id: 2641fab3-21b2-4b39-faf5-08d5335f6694 X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2822;20:4XDD2sIfRPWKukRZS3Sy6t9pWKnrgcB+x3zCyte/TQMnBFUmQuiyrmrQJUZcySNpJ6KIb/0K8zWNyuLSS+FP+wZrYOS3ATyhyxv40iKZ6IDm72qL2LVQEKncDsBzOLP+mGO57D2N0x26sHeTLS5gSCYeKaSySwoqu/1Uh/F+YPRK9I6ZOdkkSMKsFS9/V1MoVvtX6pExA7AXV3zcDsrf5njGEsuLLiD7MnX5E1e4MnUKqDaVWv3pHkWy0cOf6kJxVNF52rmRiPPaca5akHekOX81dXmzUbDXsw6j4+r+2jQviWhhbt+oa9+rIGm6DOyC8tZXcsgLoUyDdAJQtQQwpTho3gTSq09eMUreAyLhAUK/19HIq65oMD0Zdy0iSkuFxPLPzCnHHjJ+icTVyw65bZVy8ScOQGVHM5E1Gjwt9P4=;4:opRsU2Kcj8ZLphViRcDS0BmrgQonDxYCjxXfTYhjzO9WOfuAfR5oB7yy7flezm3j0S5EYhjBq/RM8NsYWpUlkHw4HBIf5m+ERq9mULGw/1hAn2zbCelU9ut82SxHBtEdj5zpAyFq0ArhJb7uEOotKQF5VhskUyaqGdwGVEsgYeAMLTwhjLdDu7Hr1oCOggmEBjZh3AEcdi3c82U1jrrM5iVj5KNjM6ofxLr3BKIeoJyQen9uWaTSmX1oc+5i8574PxJT4+KT1JsrJh7JZ25a7MEzd76y4XRfCsSFv1T/ZSM722XbNWYKhl2AkLdMzVjWDYWJWfjXRkYv+Tm9NWLErK+fqvfUqw3RfVmaM3jm7/UBUZFkqTpKZ3ivlhjoUtJp X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(215639381216008)(211936372134217)(153496737603132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(5005006)(8121501046)(10201501046)(3231022)(920507027)(3002001)(93006095)(93001095)(6041248)(20161123560025)(20161123564025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(6072148)(201708071742011);SRVR:DB6PR08MB2822;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DB6PR08MB2822; X-Forefront-PRVS: 05015EB482 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6069001)(6009001)(366004)(376002)(346002)(189002)(199003)(7416002)(50986999)(101416001)(5660300001)(2906002)(76176999)(8936002)(68736007)(76506005)(3846002)(36756003)(69596002)(6116002)(106356001)(478600001)(105586002)(53416004)(1076002)(7736002)(305945005)(81166006)(81156014)(8676002)(34040400001)(51416003)(33646002)(4326008)(39060400002)(6486002)(189998001)(25786009)(6506006)(48376002)(55236003)(53936002)(47776003)(6512007)(66066001)(2950100002)(54906003)(16586007)(110136005)(16526018)(316002)(52116002)(50226002)(86362001)(97736004)(50466002)(6666003);DIR:OUT;SFP:1102;SCL:1;SRVR:DB6PR08MB2822;H:localhost.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=aryabinin@virtuozzo.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR08MB2822;23:XEnEOerBKxHSvYQFChQdPFQGylsZldkMex3ImDgaB?= =?us-ascii?Q?Ep1Y3bFKVoRuNi8SJr79qaK6mxE7u6VQd+Q04oi718NvXI3f22G2v9ifnke1?= =?us-ascii?Q?0F8Bmhz8QC7catMpS1m5X06ZdD0GsdYtcjg46g3iU0FOrb86DSlEOBAmFMDI?= =?us-ascii?Q?nkSvu1c5+IE0TPrfTzfQbqKEHpM6Juipbxjc8dOe5zvAJ7jcPQTLo2Ll6g16?= =?us-ascii?Q?PNAL3c6lMnXIISV5PXVtWju4cdjZe6KPMP6/o6UYEdSCJhtaLJtXxQF9NL9U?= =?us-ascii?Q?25D3M3fKHJQHKi27bmbKAMz0gx5ShpnNY+awPK7ZJ+d4T08OKgZahDvy6xh6?= =?us-ascii?Q?xvklzq88eU5gKapoGr+HFu1zaSavzaxtd9JYdKPD3qAX1GIdCTzXbcdqI0jZ?= =?us-ascii?Q?lYdI4++Rf98XoxQpo9aHk4jrGQgXIUxA6nB1xkcWdSw3lNllNIrwTFwmbYDN?= =?us-ascii?Q?dVzF5ZZR0x/YiRhJQFSJb5VEtvy07H6nkVcgbpsquqCkJhSo3HEg28ALStsp?= =?us-ascii?Q?aeu6BO3fc/Ljqs8lat//+W8VDnXb1h8Nc6pAQaVnaRp8derhZGHCvpjrGr/j?= =?us-ascii?Q?K7iWS+hRvKdf9xvs+3zz96IQSwzgsYdLxx8B2fh8cJsqVoTLiPmkCEhU6cw2?= =?us-ascii?Q?l2k176Snuf0xPxmR6Qp53mi1M/Yzly5IXQNf/wkOiMQFe27GEjLqlvZXfbMQ?= =?us-ascii?Q?WYzf9JNK7Ueu4Zy/iAMJOm72oah3LACfs++hVImvwenLiuqMM3Ub6Kha5PEp?= =?us-ascii?Q?JZMgbXMYq8kASDhaquooAqGXxB2zW0fa/1rQFz0Ech7ekuuYNpnbX590a1Xi?= =?us-ascii?Q?97FUu86kxuQwolKnZf5g3aN0X3aowb10cYMuGodzaD6koj/yXsBaDyivIshx?= =?us-ascii?Q?P+pwOprHHNihIuR6cMwmIeRdlS+lpwtz7ZtB6tjgvbLrLDQxUR8jbJb5LCn/?= =?us-ascii?Q?dbrcge3aF7dh7cCtFoa6mM0S9fv5pvQt87C/WUoGFQSj8zmXMxlGZTZTR3DR?= =?us-ascii?Q?D+6miTiHVjTjTWP3PiiKZ4tMNDSrbug0skelLEygPGqHupqCMih2MYzBNPOR?= =?us-ascii?Q?A9QwwyGw7edFaDs5f8yrlj+20BN+Z/L5sKrWYFl9QjlHjhMLm6cSLPdFlzIP?= =?us-ascii?Q?LpK1uKXDS/QiOZZBHY7NyFV1MChi1e5nyxeZqms9PqMqTGIzh8/kT7ux8DoG?= =?us-ascii?Q?gJDGIAsZFglSxJWzHb9/6C5lZ7GOA78n8SZ05KmSwhHLDxVzxb7/dSJ9BC4U?= =?us-ascii?Q?1qqMjpdyMBmAbxtoqEeJRCJKvY8d87a6G23Byg1aI9Lh/yjlhQL30BpbbABV?= =?us-ascii?Q?1Uk4vCqWRLZm/pGrlwkLTg=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2822;6:zJ7bI4ZNwn/XNywfp8wfe8z/qTD4z0Zhu8qtKOiF4b7aKWuZ/1GahewbKwKiqMj6481amjDn4zuGYHvSRzy9op8+OtV5et9ySZwKlwZ/YZEdJoUu3G3qo8WdzWNu6082NlRRjnhUaAJXofVuSgxFwgIKz9RZKkNoWtUnG41+LhHxFnhj4+x0CcW7SsS1TiLPogcq2xs5djXSeycAQVz8L+ytJWvu5kCWVFJhuDFSndjag6QeJXppFYU0ukipr/Hz+1KIrpAEhuwiq2jEpO4JF0DIxp+TMjkM7lySUkuUBpbhIpUzCbiZgpgX6XsrEskTCy62iv0sCyOF5uNnNrNWCqCsXd0WU4K11XsybL5NTvU=;5:dQOGXVxUqlFLdDSp52dmBbipf+B9r7vKHToAig+ghzTqUZ3xvBP/RzCAMj3It5ZVRJ44ext8QH6zNc1VYJyMQob2X/Ov6QZ5t3pDO37fi37VcPH2HNbScC8Go2Yt3Wp9IvjtVPdRHaoX24m9xZG8lA7UnnUXhf1lP0tQoaBKjvA=;24:t4Oj/GXGTz1whZfYVqAStizfI2CG0hdTHyo7ZEmriJoSPoJgMng4RM31p0Fk8V5TBKljU58AlPGQjjAeKTNPMbCMSiD6RdvSrryvCo2Shbw=;7:VrvwrVi9W0xjnkcSyGy7rmQyg4p+3YYplT9trXkit/EX4vPvWwCbVz7tsugXIpVQImI40q25/XoUVw23arDha72AdBlRD8Zz9/ZXQq+gk8eI6mNbSOjIFRFMmS85sqKne6gCpFRL1YFPbHuIQeS42xmk49apIV1miYfbfpTMvKXvgBeHZOiCW9ohi+3PRF+NR4N9JKt32sUBXMUk2Hgp03z5ZmM8voV3FR/ASYPSzoNoKMZhG5euuouvVmxOvmsZ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DB6PR08MB2822;20:Nw3H92swg4WvMAGuHCvbLTK2a7fwq41F/oaDrV36OY79288c2nxhstzK/HDNK84K2aRvT8MuXhmtCHV/rAagZVgSkpiprthnPEpVQVBU+8wvbdg3iE5aoVzKfRAkI7/iWfJgUhiUfI/81j0crq1+8vbS4JUFyuKu5NguwVrHx5g= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Nov 2017 17:18:36.8117 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2641fab3-21b2-4b39-faf5-08d5335f6694 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR08MB2822 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andy Lutomirski The cpu_entry_area will contain stacks. Make sure that KASAN has appropriate shadow mappings for them. Cc: Alexander Potapenko Cc: Dmitry Vyukov Cc: kasan-dev@googlegroups.com Signed-off-by: Andy Lutomirski Signed-off-by: Andrey Ryabinin --- arch/x86/mm/kasan_init_64.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/arch/x86/mm/kasan_init_64.c b/arch/x86/mm/kasan_init_64.c index 99dfed6dfef8..9ec70d780f1f 100644 --- a/arch/x86/mm/kasan_init_64.c +++ b/arch/x86/mm/kasan_init_64.c @@ -277,6 +277,7 @@ void __init kasan_early_init(void) void __init kasan_init(void) { int i; + void *shadow_cpu_entry_begin, *shadow_cpu_entry_end; #ifdef CONFIG_KASAN_INLINE register_die_notifier(&kasan_die_notifier); @@ -329,8 +330,23 @@ void __init kasan_init(void) (unsigned long)kasan_mem_to_shadow(_end), early_pfn_to_nid(__pa(_stext))); + shadow_cpu_entry_begin = (void *)__fix_to_virt(FIX_CPU_ENTRY_AREA_BOTTOM); + shadow_cpu_entry_begin = kasan_mem_to_shadow(shadow_cpu_entry_begin); + shadow_cpu_entry_begin = (void *)round_down((unsigned long)shadow_cpu_entry_begin, + PAGE_SIZE); + + shadow_cpu_entry_end = (void *)(__fix_to_virt(FIX_CPU_ENTRY_AREA_TOP) + PAGE_SIZE); + shadow_cpu_entry_end = kasan_mem_to_shadow(shadow_cpu_entry_end); + shadow_cpu_entry_end = (void *)round_up((unsigned long)shadow_cpu_entry_end, + PAGE_SIZE); + kasan_populate_zero_shadow(kasan_mem_to_shadow((void *)MODULES_END), - (void *)KASAN_SHADOW_END); + shadow_cpu_entry_begin); + + kasan_populate_shadow((unsigned long)shadow_cpu_entry_begin, + (unsigned long)shadow_cpu_entry_end, 0); + + kasan_populate_zero_shadow(shadow_cpu_entry_end, (void *)KASAN_SHADOW_END); load_cr3(init_top_pgt); __flush_tlb_all(); -- 2.13.6